MySQL 5.7/8 关闭 ONLY_FULL_GROUP_BY:配置与验证方法

查找 MySQL 配置文件

首先执行:

1
mysql --help

输出中会包含类似内容:

1
2
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

在其中任意一个配置文件的 [mysqld] 节点下添加对应版本的配置。

MySQL 5.7

1
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 8

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

重启并验证

重启 MySQL:

1
systemctl restart mysql

查看配置是否生效:

1
SELECT @@sql_mode;

如果输出中不再包含 ONLY_FULL_GROUP_BY,说明配置已经生效。