11.8.mysql 新版本出現group by 語句不相容問題
阿新 • • 發佈:2019-02-11
mysql 新版本出現group by 語句不相容問題
1、 具體出錯提示:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
1.1、檢視sql_mode
select @@global.sql_mode;
1.2、 查詢出來的值為:
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
2、去掉ONLY_FULL_GROUP_BY,重新設定值。
set @@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' ;
2.1、上面是改變了全域性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';
3、:修改my.cnf(windows下是my.ini)配置檔案,刪掉only_full_group_by這一項
若我們專案的mysql安裝在ubuntu上面,找到這個檔案開啟一看,裡面並沒有sql_mode這一配置項,想刪都沒得刪。
當然,還有別的辦法,開啟mysql命令列,執行命令
如果 [mysqld] 這行被註釋掉的話記得要開啟註釋。
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION