如何在整个数据库上寻找外键违规?(我目前正在使用 MySQL)

Ged*_*ias 6 mysql sql database foreign-keys

在过去禁用外键检查的数据库中,如何检查外键约束违规

Aar*_*lla -3

启用外键约束将检查所有关系,因此如果出现问题,您将收到错误消息。

  • 问题是外键约束由于某种原因而被禁用。并且在数据加载后重新打开它们不会导致 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认同)