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

如何避免MySQL重启后全局系统变量重置,永久禁用ONLY_FULL_GROUP_BY

永久禁用MySQL ONLY_FULL_GROUP_BY(重启生效方案)

前置操作

执行SQL查询获取当前完整的sql_mode配置,避免修改时丢失其他默认规则:

SELECT @@sql_mode;

复制查询结果,删除其中的ONLY_FULL_GROUP_BY字符串,保留剩余全部内容备用。

修改配置文件

  1. 找到MySQL服务端加载的配置文件,不同系统默认路径如下:
  • Linux系统:/etc/my.cnf、/etc/mysql/my.cnf、/etc/mysql/mysql.conf.d/mysqld.cnf
  • Windows系统:MySQL安装目录下的my.ini,或C:\ProgramData\MySQL\对应版本目录\my.ini

不确定加载路径可执行命令查看优先级:mysql --help | grep "Default options" -A 1,输出列表中越靠前的配置文件优先级越高

  1. 打开配置文件,找到[mysqld]段落(必须是服务端配置段落,写到其他段落不会生效),添加或修改sql_mode配置项:
[mysqld]
# 等号后面替换为你删除ONLY_FULL_GROUP_BY之后的完整配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  1. 保存配置文件并退出。

重启服务并验证

  • Linux重启命令:systemctl restart mysqld 或 service mysql restart
  • Windows重启操作:打开服务管理器找到MySQL对应服务右键重启,或执行命令net stop mysql && net start mysql(服务名带版本的需替换为实际名称)

重启完成后再次执行SQL查询验证:

SELECT @@sql_mode;

返回结果中无ONLY_FULL_GROUP_BY即为配置生效。

常见失效排查

  • 配置写到了[mysql]、[client]等客户端配置段落,未写到[mysqld]服务端段落
  • 存在更高优先级的配置文件覆盖了你的修改,按上述查看配置加载优先级的命令确认使用的配置文件
  • 配置文件中存在重复的sql_mode配置项,MySQL会以最后一次出现的配置为准,需删除多余的重复项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:03