You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询MySQL 5.7真实默认sql_mode设置:文档与执行结果不一致

MySQL 5.7.8 真实默认sql_mode设置说明

结论

MySQL 5.7.8的真实默认sql_mode确实包含官方文档列出的7项:

  • 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

为什么执行SET sql_mode = default后只显示3项

SET sql_mode = default并非恢复到MySQL 5.7版本的官方默认模式,这个语句实际是将当前会话的sql_mode设置为编译时的基础默认值(仅STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION这3项),而非实例初始化或安装时的默认配置。

如何确认/恢复真实默认sql_mode

  1. 查看实例启动配置:检查MySQL配置文件(my.cnf/my.ini)中的sql_mode配置项,如果该配置项不存在,实例启动时会自动加载官方默认的7项;如果有自定义配置,则以配置文件内容为准。
  2. 手动恢复官方默认:若要将当前会话或全局的sql_mode恢复到官方默认,执行对应语句:
    • 会话级生效:
      SET 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';
      
    • 全局级生效(需权限,重启后仍需看配置文件):
      SET GLOBAL 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';
      

补充说明

  • NO_AUTO_CREATE_USER模式在MySQL 5.7.10及之后版本被废弃,但5.7.8版本仍属于默认包含项。
  • 若实例初始化时通过--sql-mode参数指定了自定义模式,会覆盖官方默认设置,需以初始化参数为准。

内容的提问来源于stack exchange,提问作者Ryannnnnnnnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:30:12