columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解決辦法

問題如下:

ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘jol.solution.nick’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

		mysql5.7以上默認開啓了only_full_group_by選項。我的版本是mysql8.0以上的

Windows解決辦法:

先查詢查看sql_mode中的內容

select @@GLOBAL.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+

解決辦法有兩種,第一種是臨時解決,不治本,數據庫重啓還會重新出現此問題,第二種是修改my.ini配置文件,治本,也方便
辦法1:
將查詢到的sql_mode中ONLY_FULL_GROUP_BY刪去即可,重啓就會失效

set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

辦法2:
先找到自己mysql安裝路徑

select @@basedir;
+-----------+
| @@basedir |
+-----------+
| E:\mysql\ |
+-----------+

然後進入文件夾找到自己的my.ini配置文件,修改[mysqld]中的內容,添加下面的內容就可以
在這裏插入圖片描述
在這裏插入圖片描述
一定要加在[mysqld]裏面,就是下面這行代碼,就是將查詢到的sql_mode中ONLY_FULL_GROUP_BY刪去

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

然後退出數據庫,在服務裏面重啓MySQL就可以
在這裏插入圖片描述

Ubuntu系統/Linux系統解決辦法

我的數據庫配置文件存在 /etc/mysql/mysql.conf.d/mysqld.cnf 裏,所以直接打開這個文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

打開文件後鍵入

 i #插入命令

會進入這個配置文件
在這裏插入圖片描述
可能會出現這個情況鼠標滾輪下滑沒用,使用鍵盤按鍵⬇下拉就行
在這裏插入圖片描述
跟windows一樣,添加sql_mode,也是刪除ONLY_FULL_GROUP_BY後的那一串東西,加進入後鍵入鍵盤左上角的Esc,就會退出插入模式,然後再鍵入 :wq 後回車就可以保存文件,然後再重啓MySQL就可以
重啓命令:

sudo service mysql restart

然後進入MySQL輸入下面的代碼查看,即可

select @@GLOBAL.sql_mode;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章