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; (系統當然是越安全越好,所以還是別用的好。。。)

查找MySQL/MariaDB的設置文件位置

有時候找尋這些設置文件,真的是一場噩夢。以下的指令可以輕鬆找到它的設置位置:

/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"

另外,也可以文件夾統一儲存位置的形式置放它的設置文件。

#include all files from the config directory
!includedir /etc/my.cnf.d