MySQL5.7版本sql_mode=only_full_group_by问题解决办法

  • MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致出现问题:


    image.png
  • MySQL函数:any_value(field) 允许,非分组字段的出现,和关闭 only_full_group_by 模式有相同效果。
  • 很多时候从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。
  1. 查询MySQL数据库版本
select version();
  1. 查看sql_mode的语句
select @@GLOBAL.sql_mode;
  1. sql语句暂时性修改sql_mode(重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现)
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. 推荐解决方案
  • 修改my.cnf配置文件,通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性,
    my.cnf位于etc文件夹下,vim下光标移到[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
  1. 重启服务
service mysqld restart
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。