mysql - 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 数据库?我真的希望避免对应用程序数据库进行转储和重建,因为它非常大。
解决方案
我最终复制了表结构,将数据复制到其中,删除了原始表,然后重新创建它并将数据复制回来。孤立的外键引用现在消失了。
推荐阅读
- c# - Mono C# 中的 wss WebSocket 服务器:SslStream 不给我数据,但 Stream 给我
- linux - BASH getopts 具有相同选项的多个脚本
- xcode - 我无法使用 Mojave 10.14 安装 gcc
- laravel - 安装 laravel-scout-elastic 的版本出错
- node.js - node-red 中的全局上下文,用于存储 http req 和 res 对象
- scala - Spark:展平简单的多列 DataFrame
- c - C中Union Struct的动态数据结构
- sql - 从视图或表格中选择有区别吗?
- javascript - 使用 VueJs 绑定内联动态 css 类名
- .net - VB 2010 ListviewItemCheck