首页 > 技术文章 > 关于mysql配置的一个小问题

xzshare 2020-06-28 19:43 原文

节后来上班,就遇到了一个问题,线上以前能展示的界面突然报接口异常了,

没办法,拿出日志跟踪一看

 

发现是sql_mode设置不行,导致以前的group by 语句不能用了,使得接口报错

后续一问才知道,服务器机房维护重启了,导致sql也重启了,而mysql 5.7 默认就是only_full_group_by的,可能安装mysql的老兄配置里面没改,导致重启就出错了,没办法,只得赶紧修复

修复的方式有两种,一就是临时修复,修改下模式,另外一种是修改mysql配置,但得重启mysql服务,考虑到线上正在用,只得使用第一种了,对此记录下

第一种:

临时关闭这个模式,sql如下:

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';

这种设置后,发现没生效,后续发现hibernate链接应该是有缓存的,不得已又重启了下jar包,发现一切恢复正常

 

第二种:

改my.ini 配置,在在 [mysqld]和[mysql]下添加

sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

 这种方式后续重启都不再受影响,比较推荐此种方式

以上记录下,方便后续快速查找解决

 

推荐阅读