mysql5.7 修改sql_mode配置
服务器环境:windows server 2012 R2、mysql5.7.17
出现问题:在本地开发环境下一切正常,部署到服务器上出现GROUP BY 的聚合函数错误,如下:
select id, name from user group by name 错误;
select id, name from user group by id,name 正确;
问题原因:经过排查找到原因,在MySQL5.7之后,sql_mode配置中默认存在ONLY_FULL_GROUP_BY,
SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错;
解决过程:很好理解,只要成功修改MySQL的sql_mode配置就可以了。
1.查看当前sql_mode配置情况: SELECT @@sql_mode 如下:
2.修改sql_mode,推荐用第二种方式
方式一:使用命令 ,但是治标不治本,重启MySQL服务此设置就失效;
set @@sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
方式二: 打开my.ini文件(若没有的话点这里试试),找到sql_mode,去掉ONLY_FULL_GROUP_BY,
若没有sql_mode,则在最后增加 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然后重启服务