【问题标题】:Original mysqldump file import: Cannot add foreign key constraint?原始mysqldump文件导入:无法添加外键约束?
【发布时间】:2015-04-29 22:50:08
【问题描述】:

这个 sql 来自 mysqldump 文件,它一直给我:Error Code: 1215. Cannot add foreign key constraint 我为这个不一致挣扎了一个下午,仍然不知道问题到底是什么。

DROP TABLE IF EXISTS `regions`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `regions` (
  `region_id` bigint(20) unsigned AUTO_INCREMENT,
  `region_code` int(6) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  `parent_code` int(6) unsigned DEFAULT NULL,
  `type` varchar(255) NOT NULL,
  PRIMARY KEY (`region_id`),
  UNIQUE KEY `ui_RegionCode` (`region_code`),
  CONSTRAINT `regions_ParentCode_RegionCode` FOREIGN KEY (`parent_code`) REFERENCES `regions` (`region_code`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3525 DEFAULT CHARSET=utf8;

【问题讨论】:

  • 这是什么 MySQL?使用 5.5.9 我没有问题。
  • 我在服务器上得到了 5.5.40-MariaDB,在我的本地机器上得到了 5.6.20。
  • 我在 staging 的 mysql 转储中遇到了同样的问题。据我所知,这些表具有正确的约束;最后通过删除DEFAULT CHARSET=utf8mb4 的所有实例来解决。不是为什么为什么会得到“1215。无法添加外键约束”。
  • 我在 MySQL 5.7.8rc 上遇到了同样的错误,但删除了所有默认字符集,因为 @Ithar 说帮助我。谢谢

标签: mysql sql debugging datatable


【解决方案1】:

看起来像“CONSTRAINT regions_ParentCode_RegionCode FOREIGN KEY (parent_code) REFERENCES regions”是表区域上的自引用。

尝试在没有这个语句的情况下创建你的表

CREATE TABLE `regions`(
  `region_id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
  `region_code` INT(6) UNSIGNED NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `parent_code` INT(6) UNSIGNED DEFAULT NULL,
  `type` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`region_id`),
  UNIQUE KEY `ui_RegionCode` (`region_code`)
) ENGINE = INNODB AUTO_INCREMENT = 3525 DEFAULT CHARSET = utf8;

并在此之后添加它在此之后

ALTER TABLE regions
        ADD
        CONSTRAINT `regions_ParentCode_RegionCode`
        FOREIGN KEY (`parent_code`) REFERENCES `regions` (`region_code`)
        ON DELETE CASCADE
        ON UPDATE CASCADE;

【讨论】:

  • 我运行了外键清理版本,它仍然显示[HY000][1215] Cannot add foreign key constraint——我的命令甚至没有一个与“外国”相关的词。多么 MySQL 风格的消息。
猜你喜欢
  • 2020-09-26
  • 2016-08-01
  • 2020-09-12
  • 2017-07-16
  • 2013-03-10
  • 2021-11-05
  • 2018-02-13
相关资源
最近更新 更多