最近系统迁移,MediaWiki换到新服务器之后,随机打开页面发现Cargo的查询出现问题:
MediaWiki_Cargo_error-only_full_group_by.jpg
大致意思是使用GROUP BY子句时因为与sql_mode = only_full_group_by不兼容,从网上的结果来看大致有如下几种方法:

PHPMyAdmin方式

最顺手的肯定是PHPMyAdmin,在主页面中点击顶部的变量按钮,然后找到sql_mode行,点击编辑并删除其中的ONLY_FULL_GROUP_BY,然后保存,如下图所示:
phpMyAdmin-sql_mode-only_full_group_by.jpg

SQL/命令行

也可以通过下面的命令禁用ONLY_FULL_GROUP_BY模式:

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

注意:以上两种方法并非永久有效,在服务重启后会恢复原有设置,如下图所示,设置又恢复到修改前的状态了:
MediaWiki_Cargo_error-only_full_group_by-revert.jpg

修改配置文件

打开配置文件,如/etc/mysql/my.cnf(如果使用oneinstack安装,则是/etc/my.cnf)。找到sql_modesql-mode,删除ONLY_FULL_GROUP_BY内容。如果没有找到该变量则在最后添加如下内容:

[mysqld]
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。

先用第一种方法试了试,刷新页面之后,问题解决。剩下就是直接用第三种方法修改配置文件。

参考资料:https://stackoverflow.com/questions/41887460/select-list-is-not-in-group-by-clause-and-contains-nonaggregated-column-inc

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