复现
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';
是否修改成功。
- 首先登录
引用
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!