`drop table` 期间外键约束失败
Foreign key constraint fails during `drop table`
我有一个奇怪的问题,由于外键约束失败,我无法删除 table。场景如下
我正在尝试从我的数据库中 drop
table 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 的其他 table 是 employee
table:
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
如您所见,这些 table 中的 none 通过外键关联。那么,为什么我在尝试 drop
the department
table:
时会出现此错误
#1217 - Cannot delete or update a parent row: a foreign key constraint fails
有没有更好的方法(希望更简单)来查看定义的外键?可能出了什么问题?
show create table 不显示传入的 FK 约束(例如 FK 在子 table 中指定,而不是父)
因此,您可能有另一个 table 对 table 具有 FK 约束。我通常转储数据库的模式,它显示了所有 FK 约束。
我有一个奇怪的问题,由于外键约束失败,我无法删除 table。场景如下
我正在尝试从我的数据库中 drop
table 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 的其他 table 是 employee
table:
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
如您所见,这些 table 中的 none 通过外键关联。那么,为什么我在尝试 drop
the department
table:
#1217 - Cannot delete or update a parent row: a foreign key constraint fails
有没有更好的方法(希望更简单)来查看定义的外键?可能出了什么问题?
show create table 不显示传入的 FK 约束(例如 FK 在子 table 中指定,而不是父)
因此,您可能有另一个 table 对 table 具有 FK 约束。我通常转储数据库的模式,它显示了所有 FK 约束。