mysql5.7+ 關閉ONLY_FULL_GROUP_BY


mysql5.7以上版本在常會報關於only_full_group_by的錯誤,可以在sql_mode中關閉他,網上查找的解決辦法通過實踐后發現有些不詳細,關鍵地方說的不清楚,有的有些錯誤,自己解決之后在這里總結一下。

操作系統:Linux
mysql版本:5.7.18-1

查看

進入mysql 查看mysql版本:select version();

運行SELECT @@GLOBAL.sql_mode;和SELECT @@SESSION.sql_mode;查看sql_model參數,可以看到參數中有ONLY_FULL_GROUP_BY,
————————————————
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

臨時去除ONLY_FULL_GROUP_BY

因為這種方式從參考資料上來看只是臨時去除,所以,我並沒有嘗試,這里列出解決辦法:
set @@GLOBAL.sql_mode=''; set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

修改配置文件去除ONLY_FULL_GROUP_BY

這種方式是我實踐的方式,我詳細說一下:

  • 打開配置文件mysql.cnf
    sudo gedit /etc/mysql/mysql.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'
    網上有很多資料寫到這段代碼在[mysql]中也同時添加,另外有些寫着添加內容為 “set sql_mode XXXX”經過我在自己機器上驗證,發現都是不行的,只能在[mysqld]添加,否則會造成mysql無法連接

驗證是否生效

重啟mysql
sudo service mysql restart
查看參數是否存在

點擊查看代碼
ysql> 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> SELECT @@GLOBAL.sql_mode;
+------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.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)
————————————————

參考資料
http://www.cnblogs.com/jim2016/p/6322703.html
http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM