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 05 MySQL
mysql查询的控制语句图文详解
Apr 11 MySQL
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL 数据类型选择原则
May 27 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
带你学习MySQL执行计划
May 31 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 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
咖啡的种类和口感
2021/03/03 新手入门
用PHP实现维护文件代码
2007/06/14 PHP
五个PHP程序员工具
2008/05/26 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
用jquery来定位
2007/02/20 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
关于python字符串方法分类详解
2019/08/20 Python
python如何将两个txt文件内容合并
2019/10/18 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
安全生产月演讲稿
2014/05/09 职场文书
薪资证明范本
2015/06/19 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
SpringBoot集成Redis的思路详解
2021/10/16 Redis
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers