MySQL8 執行SQL語句報錯 "this is incompatible with sql_mode=only_full_group_by"

報錯原因:

在mysql8.0以上的版本中,對於 group by 的這種聚合操作,如果在select 中的列,沒有在group by 中出現,那麼這個SQL是不合法的,因爲列不在group by的從句中,所以對於默認設置了sql_mode=only_full_group_by的數據庫,在使用group by 的時候,就要在select後使用MAX(),SUM(),ANT_VALUE()的這種聚合函數,才能完成GROUP BY 的聚合操作。

解決方案:

WIN10的my.ini下新增如下配置(我的目錄是:C:\Program Files\MySql\mysql-8.0.17-winx64下的my.ini):

# sql模式設置
 sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

重啓mysql後在客戶端查詢 select @@sql_mode;

如下圖:

至此問題解決!

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