2017-10-12 83 views
0

MySQL模式已上传到服务器FOREIGN_KEY_CHECKS=0MySQL模式完整性检查

现在我想检查是否存在所有的外国表。 有没有办法自动检查完整性的所有模式?

回答

1

从文档Create Table Foreign Keys

然而,即使FOREIGN_KEY_CHECKS = 0,MySQL不会允许 创作,其中一列引用 不匹配列式外键约束。

所以,如果约束在那里表和匹配的列也将是。

您可以从information_schema中获得此信息。

例如

SELECT CONCAT(`table_name`, '.', `constraint_name`, ' -> ', 
`referenced_table_name`, '.' , `unique_constraint_name`) 'table a.constraint -> table b.key' 
FROM `information_schema`.`referential_constraints` 
WHERE `constraint_schema` = 'dbname'; 
+0

是的,我知道。但这非常麻烦。我希望有一个比通过information_schema查看更好的方法。 – zhekaus

+1

然后你需要写一些测试。你可以看看像mytap这样的测试框架。我在GitHub animalcarpet/mytap上的这个项目的fork有一个特性(autotap.sql),它将从'已知好'模式生成一个测试脚本。覆盖范围包括检查是否存在所有外键约束。 –