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

如何永久禁用MySQL的ONLY_FULL_GROUP_BY,重启服务器后仍生效

永久禁用MySQL ONLY_FULL_GROUP_BY参数解决方案

你之前的操作失效的原因如下:

  • set global修改仅对当前运行的MySQL实例生效,服务重启后会自动读取配置文件的配置,本身就不具备持久性
  • 修改my.ini未生效,大概率是配置路径错误、配置放错了段落、权限不足三类原因

1. 确认系统加载的正确配置文件路径

首先要找到MySQL实际读取的配置文件,避免错改了其他目录下的无效配置:

  • Windows系统:以管理员身份打开命令提示符,执行命令
    mysqld --verbose --help | findstr /i "my.ini"
    输出结果中靠前的路径就是MySQL优先加载的配置文件,修改这个路径下的文件才会生效
  • Linux系统:执行命令
    mysqld --verbose --help | grep my.cnf
    同理取靠前的路径修改

2. 正确编辑配置文件

打开正确的配置文件后,找到[mysqld]配置段,必须将sql_mode配置放在[mysqld]段下,放在[client]、[mysql]等其他段均不会生效,新增或修改对应的配置行:

[mysqld]
# 保留原有其他配置不动,仅修改或新增以下sql_mode行,确认不含ONLY_FULL_GROUP_BY即可
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

配置注意事项:

  • 参数值不要加单引号或双引号,直接写值即可
  • 如果文件中已存在sql_mode配置行,直接修改原值删除ONLY_FULL_GROUP_BY即可,不要重复添加配置行导致冲突
  • Windows下修改后如果无法保存,确认你是用管理员身份打开的文本编辑器
  • Linux下修改后执行chmod 644 你的配置文件路径保证权限正确,避免MySQL读取失败

3. 重启MySQL服务生效

修改配置后必须重启MySQL服务才会加载新配置:

  • Windows:管理员身份执行net stop mysql && net start mysql,如果你的MySQL服务名不是mysql,替换为对应的服务名即可
  • Linux:根据系统执行systemctl restart mysqld或service mysql restart

4. 验证配置生效

重启后登录MySQL,执行SELECT @@global.sql_mode;,查询结果中没有ONLY_FULL_GROUP_BY即说明配置成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:54:09