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 &
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值