我相信我在某处读到有一个mysql配置设置可以防止通过控制台更新行,除非存在WHERE子句。
我无法在文档中找到它,该选项是否存在?
答案 0 :(得分:12)
答案 1 :(得分:8)
在运行查询之前只需SET SQL_SAFE_UPDATES=0;
。
有关安全模式,请参阅MySQL tips。
对于初学者,一个有用的启动选项是--safe-updates(或--i-am-a-dummy,具有相同的效果)。对于可能已发出DELETE FROM tbl_name语句但忘记了WHERE子句的情况很有用。通常,这样的语句会删除表中的所有行。使用--safe-updates,您只能通过指定标识它们的键值来删除行。这有助于防止事故发生。
除非在WHERE子句中指定键约束或提供LIMIT子句(或两者),否则不允许执行UPDATE或DELETE语句。例如:
UPDATE tbl_name SET not_key_column=val WHERE key_column=val; UPDATE tbl_name SET not_key_column=val LIMIT 1;
答案 2 :(得分:2)
来自MySQL文档:http://dev.mysql.com/doc/refman/5.5/en/mysql-tips.html
“4.5.1.6.2。使用--safe-updates选项
对于初学者,一个有用的启动选项是--safe-updates(或--i-am-a-dummy,具有相同的效果)。对于可能已发出DELETE FROM tbl_name语句但忘记了WHERE子句的情况很有用。通常,这样的语句会删除表中的所有行。使用--safe-updates,您只能通过指定标识它们的键值来删除行。这有助于防止事故。
[...]
除非在WHERE子句中指定键约束或提供LIMIT子句(或两者),否则不允许执行UPDATE或DELETE语句。“