2015-04-17 49 views
0

我有一个奇怪的问题,我无法在外键约束失败时删除表。情景如下。在“drop table”期间外键约束失败

我从我的DB试图dropdepartments,该结构是如下:

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 

现在,已经部门标识数据库中的唯一其他表是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 

正如你所看到的,这些表都没有通过外键相关联。

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

有没有更好的方法(和希望,更简单的)办法看到外键定义:所以试图dropdepartment表时,为什么会出现这样的错误?什么可能出错?

回答

1

显示创建表不显示来电FK约束

因此,有你有另一个表与FK约束到该表的可能性(例如FK在子表,而不是父母指定)。我通常转储数据库的模式,显示所有FK约束。

+0

你说得对!确实有另一个引用'dept_id'的表。我感到很惭愧。 :'( – dotslash

+0

发生在我们身上,很高兴你找到了它。 – ac3d912