一、错误原因
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 , 喜欢的可以看看
-
本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!