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 22 MySQL
Mysql实现主从配置和多主多从配置
Jun 02 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
mysql如何查询连续记录
May 11 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
mysql sql常用语句大全
Jun 21 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
Dec 24 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中计算程序运行时间的类代码
2012/11/03 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
实习老师个人总结的自我评价
2013/09/28 职场文书
小学生植树节活动总结
2014/07/04 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
初中教师个人工作总结
2015/02/10 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python