2017-02-10 114 views
0

我跟随this SO question的第二个回答来禁用全局选项 ONLY_FULL_GROUP_BY。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) 

我刚刚发现在mysql服务重启后,这个选项被恢复了。

这是我的环境

Server: Localhost via UNIX socket 
MySQL 5.7.17-0ubuntu0.16.04.1 
Ubuntu 16.04 

我鑫卡特是在配置文件中的一个,但我没能找到它。你能指点我它位于哪里或如何永久禁用它?

回答

0

发现:

我必须添加一个新的行成/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" 

然后重新启动

sudo systemctl restart mysql 

我的设置现在重启后保留。

1

你可以找到(或创建)在这里列出的路径配置文件 - Using Option Files

在你需要的[mysqld]部分写入选项的配置文件,例如:

[mysqld] 
sql_mode=ONLY_FULL_GROUP_BY 
相关问题