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
        然后重启服务

posted @ 2020-10-23 10:50  五线农民工  阅读(2262)  评论(0编辑  收藏  举报