在`drop table`期间,外键约束失败

时间:2015-04-17 10:41:29

标签: mysql foreign-keys

我有一个奇怪的问题,因为外键约束失败,我无法删除表。方案如下。

我正在尝试drop来自我的数据库的departments表,其结构如下:

show create table `departments`
CREATE TABLE `departments` (
     `dept_id` int(11) NOT NULL AUTO_INCREMENT,
     `dept_name` varchar(50) NOT NULL,
     PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

现在,数据库中唯一具有department_id的其他表是employee表:

show create table employee
CREATE TABLE `employee` (
     `emp_id` varchar(20) NOT NULL,
     `role` varchar(10) DEFAULT NULL,
     `password` varchar(500) DEFAULT NULL,
     `division_id` int(20) DEFAULT NULL,
     `email_bb` varchar(100) DEFAULT NULL,
     `is_active` tinyint(1) NOT NULL,
     `date_joining` date DEFAULT NULL,
     `date_confirmation` date DEFAULT NULL,
     `date_appraisal` date DEFAULT NULL,
     `date_leaving` date DEFAULT NULL,
     `first_name` varchar(100) DEFAULT NULL,
     `middle_name` varchar(100) DEFAULT NULL,
     `last_name` varchar(100) DEFAULT NULL,
     `sex` varchar(1) DEFAULT NULL,
     `dob` date DEFAULT NULL,
     `email_other` varchar(100) DEFAULT NULL,
     `contact` varchar(100) DEFAULT NULL,
     `present_addr` varchar(1000) DEFAULT NULL,
     `perma_addr` varchar(1000) DEFAULT NULL,
     PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

如您所见,这些表中没有一个是通过外键相关的。那么为什么在尝试drop department表时会出现此错误:

#1217 - Cannot delete or update a parent row: a foreign key constraint fails

有没有更好的方法(希望,更简单)看到定义的外键?可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

show create table 不显示传入的FK限制(例如,在子表中指定FK,而不是父表)

因此,您可能有另一个对该表具有FK约束的表。我通常会转储数据库的模式,该模式显示所有FK约束。