【问题标题】:Remove zombie foreign keys in MYSQL删除 MYSQL 中的僵尸外键
【发布时间】:2020-06-04 19:40:51
【问题描述】:

我正在尝试通过使用 JPA 和 Eclipse-Link 生成逐步构建 MySQL 数据库。一路走来,我改变了一些关系@ManyToOne、@OneToOne等。

我现在有一些虚假外键的情况:表不存在,但引用的表仍然存在。我认为原始表是 EclipseLink 生成的交叉引用表,但已不再存在。

问题是,我无法删除这些引用的表。我收到这样的错误:

mysql> drop table PRODUCTDO;
ERROR 3730 (HY000): Cannot drop table 'PRODUCTDO' referenced by a foreign key constraint 'PRODUCTDO_DISTRIBUTIONCENTERPRODUCTDO_ProductDo_ID' on table 'PRODUCTDO_DISTRIBUTIONCENTERPRODUCTDO'.

如果我跑:

SET foreign_key_checks = 0;

然后我可以删除表,但约束仍然存在。即使我删除数据库并重新创建它,约束仍然存在:

mysql> SELECT    TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM   INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'SCO';
+---------------------------------------+------------------------------+----------------------------------------------------+-----------------------------+------------------------+
| TABLE_NAME                            | COLUMN_NAME                  | CONSTRAINT_NAME                                    | REFERENCED_TABLE_NAME       | REFERENCED_COLUMN_NAME |
+---------------------------------------+------------------------------+----------------------------------------------------+-----------------------------+------------------------+
| PRODUCTDO_DISTRIBUTIONCENTERPRODUCTDO | ProductDo_ID                 | PRODUCTDO_DISTRIBUTIONCENTERPRODUCTDO_ProductDo_ID | PRODUCTDO                   | ID                     |
| PRODUCTDO_DISTRIBUTIONCENTERPRODUCTDO | distributionCenterProduct_ID | PRDCTDDSTRBTIONCENTERPRODUCTDOdstrbtnCntrProductID | DISTRIBUTIONCENTERPRODUCTDO | ID                     |
+---------------------------------------+------------------------------+----------------------------------------------------+-----------------------------+------------------------+
2 rows in set (0.01 sec)

如何摆脱这些僵尸限制?

【问题讨论】:

    标签: java mysql jpa foreign-keys schema


    【解决方案1】:

    最后,我不得不重新创建表和外键,然后才能删除它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2012-03-18
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2015-02-22
      相关资源
      最近更新 更多