我被赋予了将遗留数据库迁移到MySQL并正确创建关联的任务。因此,我所做的是通过设置SET foreign_key_checks = 0;
将所有数据导入数据库。
然而,现在我遇到了问题,因为看起来存在许多外键约束问题。
使用数据库的应用程序只会抱怨约束问题而不是抱怨。所以,我想知道如何找到这些问题。是否有MySQL附带的自检?或任何其他帮助发现这些问题,我们表示赞赏。
谢谢!
答案 0 :(得分:0)
您只需要询问dbms引用表中哪些键列的值不在引用表中。
create table a (
id integer primary key
);
create table b (
id integer primary key
);
insert into a values (1);
insert into a values (2);
insert into a values (3);
insert into b values (1);
insert into b values (2);
insert into b values (7);
想象一下,应该有一个从b到a的外键。尝试向表b添加外键应该会失败,因为'7'不在表a中。此查询将返回b中不在。
中的所有IDselect b.id
from b
left join a on (a.id = b.id)
where a.id is null