1. 程式人生 > >11.8.mysql 新版本出現group by 語句不相容問題

11.8.mysql 新版本出現group by 語句不相容問題

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

然後重重啟mysql服務