首页 > 解决方案 > 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 数据库?我真的希望避免对应用程序数据库进行转储和重建,因为它非常大。

标签: mysql

解决方案


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


推荐阅读