2017-02-10 113 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 
相關問題