Mysql 删除外键约束

Mysql 删除外键约束,mysql,Mysql,我试图删除一个外键,但它抛出了一个错误 **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 traveltime的输出 CREATE TABLE `traveltime` (

我试图删除一个
外键
,但它抛出了一个错误

**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 traveltime的输出

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

定义
外键
的列是
travelid
,但在创建约束时,您可能没有为约束本身指定标识符,MySQL代表您创建了一个:
traveltime\u ibfk\u 1
。。这是您需要在
ALTER
语句中针对的标识符

ALTER TABLE traveltime DROP FOREIGN KEY traveltime_ibfk_1
虽然很难直观地解析,但可以指定


。。。其中,
fk\u symbol
是约束的标识符名称,而不是定义约束的列(因为可以定义多列fk)。

travelid是列还是索引?查看此线程,看看它是否解决了您的问题:。您必须使用键名而不是列名
SHOW CREATE TABLE TRAVELTIME
运行此qery编辑您的问题及其结果
ALTER [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]

alter_specification:
    table_options
...
...
DROP FOREIGN KEY fk_symbol