场景:为什么我不能删除外键?
Parent table | id primary key, message_p
Child table | id primary key, parent_id foreign key, message_c
我在父表中数据的第1行和2行子表中的数据。我想测试FK关系执行的约束条件。然后我试图从子表中删除外键,以便evene虽然子表中有2行,然后我可以继续和删除父行:
alter table child
drop foreign key parent_id
然后我得到了以下错误:
[1091 - Can't DROP 'parent_id'; check that column/key exists]
注:
show create table child
CREATE TABLE `track` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`title` varchar(50) DEFAULT NULL,
`artist` varchar(50) DEFAULT 'TBA',
`album` varchar(50) DEFAULT 'TBA',
`genre` varchar(50) DEFAULT 'TBA',
`dance_style` varchar(50) DEFAULT 'TBA',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
CONSTRAINT `track_ibfk_1` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
我失去了我的查询或约FK的一般理解的东西吗?
貌似你试图通过列名来删除一个外键,而不是由外键的名称。 –
另外你的'show create table child'向我们展示'track'表,确定你粘贴了正确的代码? –
但请注意,在该表上,约束名称是'track_ibfk_1'。你的'child'表应该会发生同样的情况,所以你试图按列名删除外键,而不是外键名。 –