3

在我的过程中,我做了类似的事情:

SET FOREIGN_KEY_CHECKS = 0;
LOAD DATA INFILE '/path/to/mytable.txt' INTO TABLE mytable;
SET FOREIGN_KEY_CHECKS = 1;

现在,我需要检查此导入后的数据是否没有破坏参照完整性。我想做类似的事情

check database all foreign_keys;

是否存在类似的命令?如果没有,怎么做这个控制?

环境:带有 InnoDB 的 MySQL v5.1.xx

谢谢

4

2 回答 2

3

回答

是一些代码,可以满足您的需要。好像没有这样的命令。

历史

好的,我不是 MySQL 专家,但除非您禁用它,否则会不断管理引用完整性。除非您首先删除或禁用了约束,否则您不能将行插入到违反约束的表中。没有必要“检查”它们。

如果您确实“禁用”了它们,那么启用它们将强制进行检查。

这实际上是完全错误的,而且确实非常可怕。 至少在 5.1

我想如果他们有那个功能,他们会在你重新启用约束时调用它,所以我怀疑你会在服务器中找到它。

于 2010-09-16T20:39:02.603 回答
1

不幸的是,上面的链接已经死了。

这篇博文中提到的脚本很好地显示了未引用的 FK(尽管它也会在 FK 可以为空时显示它们,因此可能是合法的 null,因此并不总是有帮助!):

http://www.mysqlperformanceblog.com/2011/11/18/eventual-consistency-in-mysql/

于 2012-09-12T14:13:40.700 回答