在公司出现以下Bug问题
所以开始研究为什么会出这个问题
找到网上说先执行这个命令
打开mysql客户端,输入
select @@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
再执行
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';
意思就是说把这个条件给重新设置一下,总的来说少了这个一个设置
ONLY_FULL_GROUP_BY
之后再测试一下查询还是不成功。
难道需要重启mysql?
打开服务找到mysql服务
右键重新启动。还是不行。
怀疑是那部分存在缓存
最后了,重启项目。前端后端都重启,浏览器 Shift+F5强制刷新。
再测试成功了。
解决方法:
去除ONLY_FULL_GROUP_BY
1、通过命令关闭:
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';
1
但该方法在重启Mysql服务后会失效,重启服务后会失效
2、通过修改mysql的配置文件关闭ONLY_FULL_GROUP_BY SQL模式
文件底部追加:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1
那么配置文件去哪里找?
可以查询
select @@basedir
把这一行添加上
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION