我相信我在某处读到有一个 mysql 配置设置可以防止通过控制台更新行,除非存在 WHERE 子句。
我无法在文档中找到它,是否存在该选项?
就SET SQL_SAFE_UPDATES=0;
在运行查询之前。
请参阅有关安全模式的MySQL 提示。
对于初学者来说,一个有用的启动选项是 --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;
来自 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 语句。”