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 性能监控及调优
Apr 06 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
WINDOWS下安装mysql 8.x 的方法图文教程
Apr 19 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
Jun 14 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 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
使用php4加速网络传输
2006/10/09 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
PHP中的事务使用实例
2015/05/26 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
JS前端加密算法示例
2016/12/22 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
Why do we need Unit test
2013/01/03 面试题
会计电算化专业毕业生自荐信
2013/12/20 职场文书
期末考试动员演讲稿
2014/01/10 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技