一、前言:
MySQL这个group_by报错有两个地方需要修改,但是我暂时没搞懂这两种的区别,请大佬留言
执行一下操作可以解决该报错,试试吧!
打开:
二、解决方法:
情况1:
# 查看mode
select @@sql_mode
# 修改mode
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY',''));
情况2:
# 查询mode
select @@GLOBAL.sql_mode;
# 修改模式(三选一)
SET sql_mode=(SELECT REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY',''));
SET @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
SET @@GLOBAL.sql_mode='';
三、结果:
执行前:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
执行后:STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
四、进阶:
如果重启了MySQL,以上的方法将失效,可以考虑以下方法来进行修改。
打开MySQL文件夹中的配置文件 my.ini
找到 [mysqld] 在下面新增一行:
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
最后,重启MySQL
完~
或者开动脑筋修改逻辑吧