我需要创建一个外键,但是执行以下结果会导致错误:“错误代码:1826。重复的外键约束名称为'FK_ProjectBase_Program'”
alter table ipos5.ProjectBase
add constraint FK_ProjectBase_Program foreign key (Program) references Program(OID);
如果我执行:
select *
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'
result = def ipos5 FK_ProjectBase_Program ipos5 projectbase FOREIGN KEY
我可以看到现有的键定义,但是如果显示目标TABLE_NAME的结构,则该结构不存在。 这是在使用InnoDB的具有大量数据的活动数据库上,因此转储/还原是最后的选择。 我使用的是第3方框架,该框架不允许我手动指定外键名称(因此我必须使用指定的外键名称),但是启动过程中由于无法创建密钥,我的应用程序出错。 有没有一种方法可以重建information_schema数据库?我真的希望避免转储和重建应用程序数据库,因为它很大。
答案 0 :(得分:0)
我最终复制了表结构,将数据复制到其中,删除了原始表,然后重新创建它并复制了数据。孤儿外键引用现在不见了。