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