
我對 MySQL 5.7 中的 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';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
這樣做可以消除錯誤並允許我的應用程式運行。
我確實嘗試添加:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然而,/etc/mysql/my.cfg
這導致了一些問題,因為不再產生自動增量數字,因此所有插入都失敗了。
現在許多伺服器上都發生這種情況,如果其中任何伺服器重新啟動,繼續執行查詢會很痛苦。
有人能幫我解決這個問題嗎?
答案1
若要在伺服器啟動時設定 SQL 模式,請使用
--sql-mode="modes"
命令列上的選項,或sql-mode="modes"
使用選項檔案(例如 my.cnf(Unix 作業系統)或 my.ini (Windows))中的選項。模式是用逗號分隔的不同模式的清單。若要明確清除 SQL 模式,請在命令列上使用 --sql-mode="" 或在選項檔中使用 sql-mode="" 將其設為空字串。
將引號包含在您的my.cnf
.