完美解決mysql5.7以上版本 this is incompatible with sql_mode=only_full_group_by錯誤

ONLY_FULL_GROUP_BY是MySQL提供的一個sql_mode,通過這個sql_mode來提供SQL語句GROUP BY合法性的檢查,在MySQL的sql_mode是非ONLY_FULL_GROUP_BY語義時。一條select語句,MySQL允許target list中輸出的表達式是除聚集函數或group by column以外的表達式,這個表達式的值可能在經過group by操作後變成undefined,從而導致程序報錯。

進入mysql服務後查看:

select @@global.sql_mode;

下面是完美解決的方案

找到my.conf文件,分別在[mysqld]和[mysql]下面添加這段 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然後重啓mysql服務,問題解決。

當你再次進入mysql查看的時候,就會看到少了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';

但是執行完這個語句,再次select的時候還會有ONLY_FULL_GROUP_BY,不能夠解決問題。over

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