首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法

记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法

原创
作者头像
李洋博客
发布2025-07-04 17:04:51
发布2025-07-04 17:04:51
4K00
代码可运行
举报
文章被收录于专栏:李洋博客李洋博客
运行总次数:0
代码可运行

昨天在数据迁移的过程中,后台接口函数无法链,因为要模拟本地局域网,不能使用外网,所以web环境都是本地U盘下载的安装包,所有环境安装完成后运行项目发现后台无法查看数据,SQL语句会报错:“1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated”,之前遇到过类似的错误,但是没有去记录,导致问题再现时又是度娘结局额的,所以长个记性记录下,但其实它的原因并不复杂。

这个错误的产生,主要是因为在MySQL数据库版本为5.7及以上时,默认开启了ONLY_FULL_GROUP_BY SQL模式。在这个模式下,对于GROUP BY操作有严格的要求:SELECT语句中的查询列,如果不在GROUP BY子句中出现,那么这个查询就是非法的。这是因为,非聚合列在GROUP BY操作中没有明确的值,所以MySQL无法确定如何对这些列进行分组。

为了解决这个问题,我们可以采取以下两种方法:

第一种方法

在MySQL的配置文件中进行设置。对于Linux系统,我们需要编辑【/etc/my.cnf】文件,在[mysqld]配置中添加或修改sql_mode字段。

对于Windows系统,我们需要编辑MySQL安装目录下的【my.ini】文件,同样在[mysqld]配置中添加或修改sql_mode字段。

代码语言:javascript
代码运行次数:0
运行
复制
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

在添加或修改完sql_mode字段后,如图:

记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法 第1张
记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法 第1张

我们需要保存文件并重启MySQL服务,以使设置生效。

第二种方法

在Navicat中,输入下列SQL语句进行查询:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT @@GLOBAL.sql_mode;

查询结果如下,类似如下:

代码语言:javascript
代码运行次数:0
运行
复制
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

通过上面的查询结果,可以看到 开启了 ONLY_FULL_GROUP_BY 模式,这里第一种解决方案就是,去除 ONLY_FULL_GROUP_BY,重新设置值。

命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
set @@global.sql_mode 
='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

执行完上面的SQL语句之后,再次执行报错的SQL语句,发现可以正常运行了。

记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法 第2张
记录MySQL报错1055:ONLY_FULL_GROUP_BY模式下的GROUP BY查询问题及解决方法 第2张

另外树下,修改之后一定一定需要重启mysql才能使其生效。好了,修改完成项目运行一切正常,有问题留言反馈,对于不属于sql域名的直接在文件里添加然后重启mysql就行,不然出错就不好弄了,还要记得备份啊!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种方法
  • 第二种方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档