this is incompatible with sql_mode=only_full_group_by錯誤解決方案(親測可用)

mysql5.7 以上版本會出現這個問題


only_full_group_by 的意思是:對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,因爲列不在GROUP BY從句中,也就是說查出來的列必須在group by後面出現否則就會報錯,或者這個字段出現在聚合函數裏面。其實這個配置感覺和distinct差不多的,所以去掉就好 

命令行輸入:

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!

這個時候再用select 一下,

SELECT @@sql_mode;

SELECT @@GLOBAL.sql_mode;

發現已經不存在ONLY_FULL_GROUP_BY ,感覺已經OK。但是如果你重啓Mysql服務的話,發現ONLY_FULL_GROUP_BY還是會存在的!

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