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

起因:

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

	which is not functionally dependent on columns in GROUP BY clause; this is incompatible withsql_mode=only_full_group_by

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

解决:

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

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

    sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
  3. 重启MySQL服务器,这里我是直接通过命令方式,或者添加了service可以通过service 重启

     #关闭命令
     /home/mysql8/bin/mysqladmin -uroot -p shutdown
     #启动命令
     /data/software/mysql8/bin/mysqld_safe --defaults-file=/data/software/mysql8/my.cnf &
    
posted @ 2024-05-23 16:02  河岸飞流  阅读(117)  评论(0编辑  收藏  举报

那片笑声让我想起我的那些花儿
在我生命每个角落静静为我开着
我曾以为我会永远守在她身旁
今天我们已经离去在人海茫茫
她们都老了吧 她们在哪里呀
幸运的是我曾陪她们开放