MySQL安全模式:sql_safe_updates講解


什么是安全模式

在mysql中,如果在update和delete沒有加上where條件,數據將會全部修改。不只是初識mysql的開發者會遇到這個問題,工作有一定經驗的工程師難免也會忘記寫入where條件。為了避免失誤造成的數據全部修改和刪除,可開啟mysql的安全模式。

安全模式的開啟:

mysql> show variables like 'sql_safe_updates';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| sql_safe_updates | ON    |
+------------------+-------+
1 row in set (0.00 sec)

安全模式的一般報這樣的錯誤:

mysql> update users set status=1;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

 關閉安全模式:

mysql> set sql_safe_updates=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'sql_safe_updates';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| sql_safe_updates | ON    |
+------------------+-------+
1 row in set (0.00 sec)

注意,如果生產環境中有必要設置安全模式,一下幾點要明白:

如果設置了sql_safe_updates=1,那么update語句必須滿足如下條件之一才能執行成功

1)使用where子句,並且where子句中列必須為prefix索引列
2)使用limit
3)同時使用where子句和limit(此時where子句中列可以不是索引列)

delete語句必須滿足如下條件之一才能執行成功
1)使用where子句,並且where子句中列必須為prefix索引列
2)同時使用where子句和limit(此時where子句中列可以不是索引列)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM