复现
1 | Error querying database. |
原因
在 MySQL 5.7.5 之后,默认设置 ONLY_FULL_GROUP_BY 参数为打开状态,因此会导致很多 sql 会出现问题,而上述出现的就是其中的一种。
归根到底还是 sql 的不规范造成的,因为在使用 GROUP BY 之后,返回的一些数据是不确定的,所以才会出现这个异常。
解决方案
- 修改
sql- 使用
ANY_VALUE(table.column)函数来抑制ONLY_FULL_GROUP_BY值被拒绝,原因在于ANY_VALUE()函数会选择被分到同一组的数据里第一条数据的指定列值作为返回数据。 - 在
sql之后使用GROUP BY来保证table.column唯一有值。
- 使用
- 修改
MysQL的参数配置- 首先登录
MySQL,查看对应的配置信息show variables like '%sql_mode';。接下来就可以编辑my.cnf文件,找到sql-mode的位置,去掉其中的ONLY_FULL_GROUP_BY,然后重启MySQL。最后在重启MySQL后,查看对应的配置信息show variables like '%sql_mode';是否修改成功。
- 首先登录
引用
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!