这是我的总输出:
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
正如你所看到的,我并没有尝试添加外键约束,这就是为什么我被这个错误所困扰。
答案 0 :(得分:1)
我遇到了类似的情况。我的问题的原因是我的information_schema.KEY_COLUMN_USAGE表中引用了表名,尽管之前已被删除。尝试查找与您的表共享名称的任何引用。以下查询揭示了我的问题:
SELECT * FROM KEY_COLUMN_USAGE WHERE TABLE_NAME LIKE '%EMPLOYEE%';
该查询为以前删除的表提供了外键,该表与我尝试在我的模式中创建的名称共享一个名称(我不确定为什么information_schema仍然引用了它,可能是mySQL错误?)。
由于我的数据库是从转储生成的,因此我最终删除了架构并重新创建,这隐式删除了有问题的行。如果这不是一个选项而且您拥有或者可以获得root权限,那么您也可以删除任何有问题的行,但我会非常谨慎。