sql_mode=only_full_group_by

背景

程序在線上版本運行沒有問題,在本地運行卻出現(xiàn)SQL錯誤,錯誤中提到了“sql_mode=only_full_group_by”,再一聯(lián)想,本地環(huán)境只有數(shù)據庫版本不同,所以便知道了問題所在。

解決

1.分別查看本地和線上數(shù)據庫的sql_mode

    select @@GLOBAL.sql_mode;

本地: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
生產: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
2.修改本地庫sql_mode

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';
原因

mysql 5.7版本默認的配置包含:sql_mode="ONLY_FULL_GROUP_BY",這個配置嚴格執(zhí)行了"SQL92標準"。很多從5.6升級到5.7時(實際上我的數(shù)據庫版本是),為了語法兼容,大部分都會選擇調整sql_mode,使其保持跟5.6一致,為了盡量兼容程序。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容