我正在尝试删除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
答案 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>