MySQL SQL_SAFE_UPDATE 模式

剛發佈一個新模塊,就有客戶投訴說不能使用。安排了一個網上面對面檢查,發現對方在使用模塊時,一旦要進行資料庫的更新或刪除資料動作,就會被卡著。

錯誤訊息為 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.

查了下谷歌大神的説法,錯誤訊息中其實也已經給了很明顯的對策,就是這個服務器啓動了資料安全機制,一旦需要進行 Update 或 Delete 動作,必須在 WHERE 的語句中有使用 KEY 欄目。例如主索引欄目,常用名為 id。

解決方式也很簡單,如果只要繞過這個情況,在所有 Update 和 Delete 語句中,加入 id != “” 或 id <> “” 即可。

當然,如果服務器允許關閉此安全模式,也可以運行 SET SQL_SAFE_UPDATES=0; (系統當然是越安全越好,所以還是別用的好。。。)