MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法


Posted in MySQL onJune 14, 2022

项目场景:

最近在部署项目之后,运行出现报错:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘grades.order_id’ 
which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by

问题描述

字面意思理解:

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grades.order_id” 它在功能上不依赖于
GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容

使用GROUP BY 语句违背了sql_mode=only_full_group_by。因为mysql版本5.7之后默认的模式是ONLY_FULL_GROUP_BY

原因分析:

查看官方文档,发现从 MySQL 5.7.5 开始,默认 SQL 模式包括 ONLY_FULL_GROUP_BY。 (在 5.7.5 之前,MySQL 不检测函数依赖,并且默认不启用 ONLY_FULL_GROUP_BY。)这可能会导致一些sql语句失效。

解决方案:

执行命令vim /etc/mysql/conf.d/mysql.cnf修改配置文件

如果my.cnf中有sql_mode配置,则将ONLY_FULL_GROUP_BY去掉。

如果没有,则将下面内容放到相应位置

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存之后,执行命令service mysql restart重启mysql即可。

2022.06.10更新

MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法

最近用docker安装mysql又出现这个问题,修改配置文件之后,重启mysql发现连不上mysql

于是查看错误信息 docker logs -f --tail 10 mysql,出现报错:

Error while setting value
‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
to ‘sql_mode’

MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法

原来mysql 8.0 以上取消了NO_AUTO_CREATE_USER这个关键字,在my.cnf中的sql_mode中删掉这个关键字即可。

总结

到此这篇关于MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法的文章就介绍到这了,更多相关MySQL运行报错内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL如何构建数据表索引
May 13 MySQL
mysql中between的边界,范围说明
Jun 08 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 #MySQL
MySQL安装失败的原因及解决步骤
MySQL范围查询优化的场景实例详解
Jun 10 #MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 #MySQL
mysql中关键词exists的用法实例详解
Jun 10 #MySQL
sql注入报错之注入原理实例解析
Jun 10 #MySQL
MySQL如何修改字段类型和字段长度
Jun 10 #MySQL
You might like
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
详解JS模块导入导出
2017/12/20 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
Python闭包实现计数器的方法
2015/05/05 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python中extend和append的区别讲解
2019/01/24 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
法学专业毕业生求职信
2014/06/12 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书