问题是外键约束由于某种原因而被禁用。并且在数据加载后重新打开它们不会导致 mysql 检查现有数据。那么这个答案有什么用呢? (3认同)
mysql 支持外键并强制执行它们。但它还允许您暂时禁用这些密钥的强制执行,以加快关系数据的数据导入速度。请参阅http://dev.mysql.com/doc/refman/5.0/en/server-session-variables.html#sysvar_foreign_key_checks (3认同)
@AaronDigulla OP 描述的场景并不是他向存在现有违规的表“添加”外键约束的场景 - 这确实会失败。相反,他描述的是使用“SET FOREIGN_KEY_CHECKS=0”禁用所有外键验证,然后插入违反外键约束的数据,然后通过将“FOREIGN_KEY_CHECKS”系统变量设置回 1 来重新启用外键验证。确实不会抛出任何错误,但会导致表中包含违反约束的数据 - 您可以在 MySQL shell 中轻松检查这一点。-1; 这个答案是错误的。 (3认同)