最近系统迁移,MediaWiki换到新服务器之后,随机打开页面发现Cargo的查询出现问题:
大致意思是使用GROUP BY子句时因为与sql_mode = only_full_group_by
不兼容,从网上的结果来看大致有如下几种方法:
PHPMyAdmin方式
最顺手的肯定是PHPMyAdmin,在主页面中点击顶部的变量按钮,然后找到sql_mode行,点击编辑并删除其中的ONLY_FULL_GROUP_BY
,然后保存,如下图所示:
SQL/命令行
也可以通过下面的命令禁用ONLY_FULL_GROUP_BY
模式:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
注意:以上两种方法并非永久有效,在服务重启后会恢复原有设置,如下图所示,设置又恢复到修改前的状态了:
修改配置文件
打开配置文件,如/etc/mysql/my.cnf(如果使用oneinstack安装,则是/etc/my.cnf)。找到sql_mode
或sql-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。
先用第一种方法试了试,刷新页面之后,问题解决。剩下就是直接用第三种方法修改配置文件。