重新启动后,MySQL恢复ONLY_FULL_GROUP_BY

rea*_*ebo 2 mysql

我按照这个问题的第二个答案禁用了全局选项ONLY_FULL_GROUP_BY。

mysql> SELECT @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)


mysql> SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0,00 sec)


mysql> SELECT @@sql_mode;
+------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                             |
+------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)
Run Code Online (Sandbox Code Playgroud)

我刚刚发现,在重新启动mysql服务后,此选项将恢复。

这是我的环境

Server: Localhost via UNIX socket
MySQL 5.7.17-0ubuntu0.16.04.1 
Ubuntu 16.04
Run Code Online (Sandbox Code Playgroud)

我以为它在配置文件之一中,但是我找不到它。您能指出我的位置或如何永久禁用它吗?

rea*_*ebo 8

发现:

我必须在其中添加新行 /etc/mysql/mysql.conf.d/mysqld.cnf

在本节末尾[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"
Run Code Online (Sandbox Code Playgroud)

然后重启

sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)

现在,重新启动后,我的设置将保留。