mysql中sql_mode的查看和设置

2025-01-03 16:25:14 167

mysql中sql_mode的查看和设置


欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。


查看当前的sql_mode

select @@session.sql_mode;

select @@global.sql_mode;

# 或者

show variables like 'sql_mode';

image-20250102154131923image.png

临时设置方式:

设置当前窗口中设置sql_mode

SET GLOBAL sql_mode = 'modes...'; #全局

SET SESSION sql_mode = 'modes...'; #当前会话

示例:

#改为严格模式。此方法只在当前会话中生效,关闭当前会话就不生效了。
SET SESSION sql_mode='STRICT_TRANS_TABLES';

#改为严格模式。此方法在当前服务中生效,重启MySQL服务后失效。
SET GLOBAL sql_mode='STRICT_TRANS_TABLES';

永久设置方式:

在/etc/my.cnf中配置sql_mode

在my.cnf文件(windows系统是my.ini文件),新增:

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启MySQL。 当然生产环境上是禁止重启MySQL服务的,所以采用 临时设置方式 + 永久设置方式 来解决线上的问题, 那么即便是有一天真的重启了MySQL服务,也会永久生效了。


蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,蓝队云期待与你一起探索。




提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: