在一次跑项目的时候,报了这个错。
分析原因:
百度发现是Mysql5.7及以上版本默认将 sql_mode 的 ONLY_FULL_GROUP_BY 模式设置为打开状态
解决办法:
1、将数据库换回5.6及以下版本
2、将数据库中的 ONLY_FULL_GROUP_BY 模式去掉
使用如下sql查询:
select @@global.sql_mode
查询值:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
发现有一个ONLY_FULL_GROUP_BY,将它去掉即可,使用如下sql:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
很多资料说,这个解决办法重启数据库之后就失效了,目前为止,我重启很多次电脑了,并没有失效。
3、在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
但我不知道是不是缺了那个步骤,我加了这个配置之后重启数据库一直失败,重装了数据库服务再加上这个配置还是重启不了,将这个配置注释掉就重启成功了。
=============================================================================================
后面发现“=”后面的值需要加上’'(网上的资料很多都没有加),加上了之后才能重启成功
最后的配置是这个样子的
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
这是配置加入的位置,别加错地方了