今天忽然发现MySQL服务器升级以后sql_mode
变成宽松摸索了,危害以下:
mysql
set global sql_mode='strict_trans_tables'
(阿里服务器默认是:strict_trans_tables
)
sql
上面这种方式在MySQL重启后就会失效,想要永久生效还得联系运维工程师,eg:
数据库
PS:为了防止再出现升级后SQL_Mode
改变,之后在配置文件中设置SQL_Mode
服务器
SQL Model
:定义MySQL对约束的响应行为:
set [session] sql_model='xx_mode'
set @@session.sql_mode='xx_mode'
set global sql_mode='xx_mode'
set @@global.sql_mode='xx_mode'
vi /etc/my.cnf
,在[mysqld]
下添加sql_mode='xx'
,而后重启数据库set persist
命令将全局变量的修改持久化到配置文件中
/var/lib/mysql/mysqld-auto.cnf
配置文件中set persist log_timestamps='SYSTEM';
(须要root权限)strict_trans_tables
)
traditional
:使用传统模型,不容许对非法值作插入操做strict_all_tables
:对全部表作严格约束strict_trans_tables
:对全部支持事物类型的表作严格约束:
no_engine_substitution
:建表的时候指定不可用存储引擎会报错only_full_group_by
:检验group by
语句的合法性
select count(url),name from file_records group by url;
select @@sql_mode