MySql 關(guān)閉 ONLY_FULL_GROUP_BY

MySql5.7 以上版本在常會報關(guān)于 only_full_group_by 的錯誤,sqlselect 后面的字段必須出現(xiàn)在group by 后面,或者被聚合函數(shù)包裹,不然會拋錯誤。

查看

進入mysql 查看mysql版本:select version();

運行SELECT @@GLOBAL.sql_mode;SELECT @@SESSION.sql_mode;查看sql_model參數(shù),可以看到參數(shù)中有ONLY_FULL_GROUP_BY,

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

這種方式只是臨時去除:

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';12

修改配置文件去除ONLY_FULL_GROUP_BY

這種方式是我實踐的方式,我詳細說一下:

  • 打開配置文件mysql.cnf
sudo gedit /etc/mysql/mysql.cnf
  • 在 [mysqld] 中添加代碼
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

網(wǎng)上有很多資料寫到這段代碼在[mysql]中也同時添加,另外有些寫著添加內(nèi)容為 “set sql_mode XXXX”經(jīng)過我在自己機器上驗證,發(fā)現(xiàn)都是不行的,只能在[mysqld]添加,否則會造成mysql無法連接

驗證是否生效

重啟mysql

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

友情鏈接更多精彩內(nèi)容