解决mysql 5.7 以上 sql_mode 分组查询问题
2019-02-18 本文已影响0人
叶情宇
在分组查询是遇到个问题,直接报错,报错日志如下:
[ error ] [10501]SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdull_sql.md_score.scoreName' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
主要原因是
MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)
解决方式,只需要在msql_cnf配置文件中设置sql_mode即可
我使用的mamp集成系统,设置很方便,设置如下(这两种设置方式都可以,要不设置空)
#sql_mode=''
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
具体截图
企业微信20190218053835.png
重启mysql
完美解决!!!