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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
新手入门Mysql--概念
Jun 18 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 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
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python实现简单遗传算法
2020/09/18 Python
python通过cython加密代码
2020/12/11 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
酒店led欢迎词
2014/01/09 职场文书
物理课外活动总结
2014/08/27 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL