问题复现

今天突然发现MySQL服务器的sql_mode是默认的模式,危害如下:


临时解决

set global sql_mode='strict_trans_tables'(阿里服务器默认是:strict_trans_tables)


重启失效验证

上面这种方式在MySQL重启后就会失效,想要永久生效还得联系运维工程师,eg:


配置文件





知识点

* SQL Model:定义MySQL对约束的响应行为:
* 会话修改:
* mysql> set [session] sql_model='xx_mode'
* mysql> set @@session.sql_mode='xx_mode'
* PS:只在当前会话生效
* 全局修改:需要有权限,并且不会立即生效,对以后新建的会话生效(从全局继承的)
* mysql> set global sql_mode='xx_mode'
* mysql> set @@global.sql_mode='xx_mode'
* PS:MySQL重启后失效
* 配置修改:永远生效:
* eg:vi /etc/my.cnf,在[mysqld]下添加sql_mode='xx',然后重启数据库
* 常用mode:(阿里服务器默认是:strict_trans_tables)
* traditional:使用传统模型,不允许对非法值做插入操作
* strict_trans_tables:对所有支持事物类型的表做严格约束
* strict_all_tables:对所有表做严格约束
* 查询当前设置:select @@sql_mode

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信