错误:错误1215:没有添加外部约束时无法添加外键约束

时间:2013-11-23 21:34:05

标签: mysql mysql-workbench

这是我的总输出:

Executing SQL script in server

ERROR: Error 1215: Cannot add foreign key constraint

CREATE TABLE IF NOT EXISTS `pharmacy`.`EMPLOYEE` (
  `id` INT UNSIGNED NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  `sex` VARCHAR(1) NULL,
  `dob` DATE NULL,
  `start_date` DATE NOT NULL,
  `pharmacist` TINYINT(1) NULL,
  `manager` TINYINT(1) NULL,
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  PRIMARY KEY (`id`))
ENGINE = InnoDB

正如你所看到的,我并没有尝试添加外键约束,这就是为什么我被这个错误所困扰。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的情况。我的问题的原因是我的information_schema.KEY_COLUMN_USAGE表中引用了表名,尽管之前已被删除。尝试查找与您的表共享名称的任何引用。以下查询揭示了我的问题:

SELECT * FROM KEY_COLUMN_USAGE WHERE TABLE_NAME LIKE '%EMPLOYEE%';

该查询为以前删除的表提供了外键,该表与我尝试在我的模式中创建的名称共享一个名称(我不确定为什么information_schema仍然引用了它,可能是mySQL错误?)。

由于我的数据库是从转储生成的,因此我最终删除了架构并重新创建,这隐式删除了有问题的行。如果这不是一个选项而且您拥有或者可以获得root权限,那么您也可以删除任何有问题的行,但我会非常谨慎。