mysql8.0+版本在使用group by 出现的问题

2024-05-25 09:07:13 浏览数 (1)

起因:

由于想使用MySQL8中的函数,手动将项目中的数据库从5.7升级到了8.0.20 社区版本,但是升级完之后部分查询报错了,错误信息如下

代码语言:javascript复制
	which is not functionally dependent on columns in GROUP BY clause; this is incompatible withsql_mode=only_full_group_by

去搜了一下,推荐的几篇都说是需要修改配置文件,按照文章提示的操作了,结果重启就报错,仔细比对了才发现文章里的配置项加了单引号,而且还有多余的空格,简直是害人。这里记录一下,希望能帮到刷到这篇文章的你。

解决:

在客户端或者服务器连上MySQL后输入SELECT @@sql_mode;,得到结果集如下:

代码语言:javascript复制
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

这里我们去掉ONLY_FULL_GROUP_BY,然后去修改配置文件my.cnf,在[mysqld]下添加一行

代码语言:javascript复制
sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启MySQL服务器,这里我是直接通过命令方式,或者添加了service可以通过service 重启

代码语言:javascript复制
 #关闭命令
 /home/mysql8/bin/mysqladmin -uroot -p shutdown
 #启动命令
 /data/software/mysql8/bin/mysqld_safe --defaults-file=/data/software/mysql8/my.cnf &

0 人点赞