MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法

 更新时间:2022年06月13日 15:26:59   作者:.猫的树  
这篇文章主要给大家介绍了关于MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”的解决方法,文中将解决方法介绍的非常详细,需要的朋友可以参考下

项目场景:

最近在部署项目之后,运行出现报错:

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更新

最近用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 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运行报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux/Mac MySQL忘记密码命令行修改密码的方法

    Linux/Mac MySQL忘记密码命令行修改密码的方法

    这篇文章主要介绍了Linux/Mac MySQL忘记密码命令行修改密码的方法,需要的朋友可以参考下
    2017-05-05
  • Win7下安装MySQL5.7.16过程记录

    Win7下安装MySQL5.7.16过程记录

    这篇文章主要为大家分享了Win7下安装MySQL5.7.16过程的笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MYSQL8如何快速修改root密码

    MYSQL8如何快速修改root密码

    MySQL8的改密码跟MySQL5不同,很多朋友都遇到过这个问题,今天小编给大家讲解下MYSQL8如何快速修改root密码,需要的朋友可以参考下
    2023-05-05
  • MySQL常用命令与内部组件及SQL优化详情

    MySQL常用命令与内部组件及SQL优化详情

    这篇文章主要介绍了MySQL常用命令与内部组件及SQL优化详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • MySQL分区表分区策略详解

    MySQL分区表分区策略详解

    这篇文章主要介绍了MySQL分区表分区策略详解,分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表。但是对于应用程序来讲,分区的表和没有分区的表是一样的,需要的朋友可以参考下
    2023-07-07
  • 新手必备之MySQL msi版本下载安装图文详细教程

    新手必备之MySQL msi版本下载安装图文详细教程

    今天教大家怎么下载安装MySQL msi版本,文中有非常详细的图文解说,对不会下载安装mysql的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 高级MySQL数据库面试问题 附答案

    高级MySQL数据库面试问题 附答案

    绝对精彩的文章,11个高级MySQL数据库面试问题,每个问题都给出了具体答案,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Mysql如何优化查询速度

    Mysql如何优化查询速度

    这篇文章主要介绍了Mysql如何优化查询速度问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL表操作插入数据insert语句学习(小白入门篇)

    MySQL表操作插入数据insert语句学习(小白入门篇)

    这篇文章主要为大家介绍了MySQL表操作插入数据insert语句学习小白入门篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL UPDATE多表关联更新的实现示例

    MySQL UPDATE多表关联更新的实现示例

    MySQL可以基于多表查询更新数据,本文主要介绍了MySQL UPDATE多表关联更新的实现示例,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08

最新评论