MySQL“重复的外键”,但键不存在

时间:2018-09-27 13:53:09

标签: mysql

我需要创建一个外键,但是执行以下结果会导致错误:“错误代码: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数据库?我真的希望避免转储和重建应用程序数据库,因为它很大。

1 个答案:

答案 0 :(得分:0)

我最终复制了表结构,将数据复制到其中,删除了原始表,然后重新创建它并复制了数据。孤儿外键引用现在不见了。