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 26 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
详解MySQL的主键查询为什么这么快
Apr 03 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
MySQL主从切换的超详细步骤
Jun 28 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实现的数据对象映射模式详解
2019/03/20 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
Display SQL Server Version Information
2007/06/21 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
py中的目录与文件判别代码
2008/07/16 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python restful框架接口开发实现
2020/04/13 Python
python mysql中in参数化说明
2020/06/05 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
安全生产目标责任书
2014/04/14 职场文书
作风建设演讲稿
2014/05/23 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
小学教师党员承诺书
2015/04/27 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫