MySql 版本变动,在使用 group by 进行分组查询报错 sql_mode=only_full_group_by

一、错误原因

MySQL5.7.5后only_full_group_by 成为 sql_mode的默认选项之一,这可能导致一些sql语句失效。
比如在使用 group by 进行分组查询报错

二、解决办法

1、修改 sql_mode

-- 查询
select @@global.sql_mode

-- 修改
set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

上面是改变了全局sql_mode,对于新建的数据库有效。

2、对于已存在的数据库

set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

这种方式数据库重启后 设置会失效,确实是这样的,上边这种方式只是修改了内存中的值,不能永久改变。

3、原配置记录

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

4、新配置记录

区别: 删除了 ONLY_FULL_GROUP_BY

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

5、如果是阿里云 RDS, 修改为新配置

  • 修改
    在这里插入图片描述

  • 提交
    在这里插入图片描述

  • 以上部分内容来自于蚂蚁课堂 http://www.mayikt.com/

  • 个人开源项目(通用后台管理系统)–> https://gitee.com/wslxm/spring-boot-plus2 , 喜欢的可以看看

  • 本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!

猜你喜欢

转载自blog.csdn.net/qq_41463655/article/details/109035668