今天在做Cargo查询的时候,使用group by条件之后,竟然报错了。
mediawiki-cargo-query-error-1055.png
从搜索的结果来看,好像是MySQL的锅。
因为5.7以上的版本中默认启用了only_full_group_by,这使得查询的列必须包含在GROUP BY选择的列中,没有参与分组的列不能查询,不然就会报出ERROR 1055错误。
解决方案的话,可以临时关闭ONLY_FUll_GROUP_BY

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

但是这个方法一旦重启Mysql服务后就会失效。
另一种彻底解决的方法就是通过修改mysql配置文件(如/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf等)到达,在其中添加或编辑:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启Mysql服务。

systemctl restart mysql

参考文档

mysql [err] 1055错误解决
MySQL 5.7 ERROR 1055 解决办法

最后修改:2021 年 01 月 16 日
如果觉得我的文章对你有用,请随意赞赏