mysql ONLY_FULL_GROUP_BY設置sql_mode無效排查問題(windows)
mysql ONLY_FULL_GROUP_BY設置sql_mode無效排查
低版本的MYSQL環(huán)境中的Sql在MySQL8中報錯出現(xiàn)
this is incompatible with sql_mode=only_full_group_by
由于開啟了ONLY_FULL_GROUP_BY的設置,如果select 的字段不在 group by 中,
并且select 的字段未使用聚合函數(shù)(SUM,AVG,MAX,MIN等)的話,那么這條sql查詢是被mysql認為非法需。
要對MySQL8中sql_mode進行設置。
1.查詢SQLMODE
select @@GLOBAL.sql_mode;
2.臨時修改sql-mode執(zhí)行SQL
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
注:
此辦法全局生效,如果以創(chuàng)建的表空間依舊無效,需要切換到對應的表空間,再次執(zhí)行修改sql-mode
use database_name; SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
以上執(zhí)行后請執(zhí)行刷新??????
flush privileges;
3.永久修改sql-mode
用記事本直接打開my.ini文件,在文件中增加以下配置,再重啟mysql服務。
# Set the SQL mode to strict # sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
注1:
- 如果使用記事本編輯保存后,可能會啟動失敗,需要檢查文件編碼格式,
- 記事本默認編碼格式UTF-8,my.ini文件需要ANSI格式,建議直接另存為覆蓋文件。

注2:
- 按上述辦法修改my.ini文件后重啟MySQL發(fā)現(xiàn)依舊無效,此時需檢測MySQL讀取的my.ini路徑是否正確。
- 執(zhí)行下方SQL,查詢讀取my.ini路徑。
- 如果發(fā)現(xiàn)此路徑下沒有my.ini文件需要手動新建一個my.ini文件。
show variables like 'datadir';
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
ubuntu 16.04下mysql5.7.17開放遠程3306端口
這篇文章主要介紹了ubuntu 16.04下mysql5.7.17開放遠程3306端口的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
MySQL中配置文件my.cnf因權限問題導致無法啟動的解決方法
這篇文章主要給大家介紹了關于MySQL中配置文件my.cnf因權限問題導致無法啟動的解決方法,該無法啟動的錯誤提示代碼是:World-writable config file '/etc/my.cnf' is ignored,文中給出了詳細的解決方法,需要的朋友們下面來一起看看吧。2017-06-06

