真正有效解决ONLY_FULL_GROUP_BY的问题

问题描述

在
报错 如上图 在mysql 5.7版本下可能会报如下错误

Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘×××’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因 是在5.7下mysql的model默认为

ONLY_FULL_GROUP_BY

含义 sql中select后面的字段必须出现在group by后面,或者被聚合函数包裹,不然会抛出上面的错误 如以下sql

select A.column1, A.column2 from table as A group by column1 //会因为ONLY_FULL_GROUP_BY的缘故抛出上面错误

问题解决

网上对与这个问题的解决有很多 但是经过我的试验都没生效,且方案都基本一致。最好我在stackoverflow找到如下方案,可生效,在数据库下执行如下sql

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

若还不行可尝试执行如下sql

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';

意义 取消掉这个模式的设置

如果你也和我一样烦恼网上的其它方案没有解决你的问题,而我的方案刚好能解决,就留下一个赞吧

发布了16 篇原创文章 · 获赞 8 · 访问量 8486

猜你喜欢

转载自blog.csdn.net/qq_34637782/article/details/101029487