对于新手,有一个有用的启动选项--safe-updates(或--i-am-a-dummy,具有相同的效果)。当你已经发出一个DELETE FROM tbl_name语句但忘记了WHERE子句时很有用。通常情况,这样的语句从表中删除所有行。用--safe-updates,可以通过指定可以识别它们的键值只删除某些行。这样可以帮助防止事故。
若使用--safe-updates选项,mysql连接MySQL服务器时发出下面的语句:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;
SET语句有下面的效果:
· 不允许你执行UPDATE或DELETE语句,除非在WHERE子句中指定一个键值约束或提供一个LIMIT子句(或二者皆使用)。例如:
· UPDATE tbl_name SET not_key_column=val WHERE key_column=val; · · UPDATE tbl_name SET not_key_column=val LIMIT 1;
· 所有大的SELECT结果自动限制到1,000行,除非语句包括一个LIMIT子句。
· 放弃可能需要检查1,000,000多行组合的多表SELECT语句。
要将限制指定为1,000和1,000,000之外的值,可以使用--select_limit和--max_join_size选项覆盖默认值:
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000