执行INSERT语句成功但仍报1055错误,移除only_full_group_by后问题依旧
解决MySQL 1055报错(已移除only_full_group_by仍生效的情况)
1. 先确认当前会话的sql_mode状态
执行以下语句查看当前连接的sql_mode:
SELECT @@SESSION.sql_mode;
如果结果里还包含ONLY_FULL_GROUP_BY,说明你修改的全局配置没同步到当前会话,或者全局配置根本没生效。
2. 临时生效:修改当前会话的sql_mode
如果只是当前会话需要解决,执行:
SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
(把原有模式里的ONLY_FULL_GROUP_BY移除,保留其他必要的sql模式)
3. 确保全局配置生效
- 修改my.ini后必须重启MySQL服务,新配置才会加载
- 重启后执行
SELECT @@GLOBAL.sql_mode;,确认全局模式里已经没有ONLY_FULL_GROUP_BY - 如果仍存在,检查my.ini的实际路径:部分MySQL安装会存在多个配置文件(如my.cnf、my.ini),你修改的可能不是实际生效的那个。执行
mysql --help | grep "Default options"可以找到MySQL实际加载的配置文件路径。
4. 排查客户端工具的自动查询
报错提到了information_schema.PROFILING.SEQ,大概率是你的SQL客户端工具(如Navicat、DataGrip)在执行INSERT后,自动触发了性能分析类的查询,这类查询用到GROUP BY但不符合only_full_group_by规则。可以在客户端设置里关闭「执行后自动显示执行计划/性能分析」的功能,避免触发这类报错。
内容的提问来源于stack exchange,提问作者stackReset
相关产品推荐
相关产品推荐

