1. 程式人生 > >MySQL升級到5.7.22 遇到的第一個問題 “[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and

MySQL升級到5.7.22 遇到的第一個問題 “[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and

即上次升級了MySQL到5.7.22 後立馬就開始導一些表開始體驗下這個版本的資料庫,結果剛建完表語句執行就報了一個錯。具體資訊如下“[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。表雖然也是建成功了,但是看到報錯也還是心慌慌的。

大概印象中MySQL group by 的欄位,與select 的欄位 可以是不對等,即select 的 欄位 可以存在不在group by的欄位的。比如 可以有類似 select id,name,age.hobby from user group by name;這樣的語句存在。  報錯資訊中的 only_full_group_by  應該就是一種更嚴格的規定,select 的欄位 與 group by 欄位的關係。

 

SHOW VARIABLES LIKE '%sql_mode%';  檢視下SQL的模式,結果是發現了 

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.

那就找到myql配置檔案下重新對sql_mode 賦值   

修改完後 重啟下 MySQL服務 service mysql restart

再重新匯入建表語句,表新建成功,也沒有再報以上的錯誤了。