记录开发问题
今天在本地MySQL上跑项目没问题,在服务器上运行查询时候报错
错误代码: 1055
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column
‘m.TYPE’ which is not functionally dependent on columns in GROUP BY clause; this is
incompatible with sql_mode=only_full_group_by
思考:
应该是因为两个MySQL版本或设置的差异导致的。
原因:
MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。此模式下,要求select的所有列(除了聚合的字段以外)都要在group by中。
解决方法:
找到原因解决起来就简单了。
方法一:
把select的列都加到group by中。
方法二:
把不需要group by的字段给屏蔽掉。这里就用到MySQL的一个方法any_value()
。
使用any_value(m.id) AS id
的方式跳过group by的检查。
方法三:
修改MySQL的配置文件,我觉得为了个sql修改配置,这方法不太行,不推荐,就不贴修改配置的代码了。
想了解详细原因的参考:点击这里 ,有大神给出详解。