Mysql查询group_by报错涉及的ONLY_FULL_GROUP_BY配置

描述:
Mysql查询group_by错误涉及的ONLY_FULL_GROUP_BY配置

原因:
mysql5.7.5版本开始,sql_mode使用的是默认值:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
默认的ONLY_FULL_GROUP_BY字段导致不能直接查询group_by包裹的之外的字段,只查询group_by的字段可以正常使用。

解决:
1.修改sql_mode,修改mysql的初始化文件:删除sql_mode里面的"ONLY_FULL_GROUP_BY",问题解决,但是由于sql_mode=""会带来可以预估的错误,如数据被截断等,所以这种方法有数据丢失的风险。
2.程序中改变查询语句的写法,group_by之外的字段使用func函数包围为了符合ONLY_FULL_GROUP_BY=True的要求。

参考地址:https://www.jianshu.com/p/9e53216db6aa

你可能感兴趣的:(BUG)