删除外键约束

时间:2016-05-06 19:41:12

标签: mysql

我正在尝试删除FOREIGN KEY但是它会抛出错误。

**mysql> alter table traveltime drop foreign key travelid;

ERROR 1091 (42000): Can't DROP 'travelid'; check that column/key exists
mysql>**

travelid是引用另一个表的外键。这是SHOW CREATE TABLE旅行时的输出;

CREATE TABLE `traveltime` (
  `timeid` int(11) DEFAULT NULL,
  `travelid` int(11) DEFAULT NULL,
  `hour` int(11) DEFAULT NULL,
  `minute` int(11) DEFAULT NULL,
  KEY `travelid` (`travelid`),
  CONSTRAINT `traveltime_ibfk_1` FOREIGN KEY (`travelid`) REFERENCES `travel` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 个答案:

答案 0 :(得分:1)

定义FOREIGN KEY的列是travelid,但您可能在创建时没有为约束本身指定标识符,并且MySQL代表您创建了一个:{{1这是您需要在traveltime_ibfk_1声明中定位的标识符。

ALTER

虽然在视觉上解析起来很困难,但MySQL's ALTER TABLE docs指定了

ALTER TABLE traveltime DROP FOREIGN KEY traveltime_ibfk_1

...其中ALTER [IGNORE] TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_options] alter_specification: table_options ... ... DROP FOREIGN KEY fk_symbol 是约束的标识符名称,而不是定义它的列(因为可以定义多列FK')。 p>