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 18 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL分库分表详情
Sep 25 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL数据库 安全管理
May 06 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
面试官问我Mysql的存储引擎了解多少
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
PHP操作文件方法问答
2007/03/16 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python求解平方根的方法
2015/03/11 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python实现加密的方式总结
2020/01/19 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
幼儿园教研活动方案
2014/01/19 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
开学第一周总结
2015/07/16 职场文书
子女赡养老人协议书
2016/03/23 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
关于mysql中string和number的转换问题
2022/06/14 MySQL