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