2016-05-06 31 views
1

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 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 
+0

'travelid'は列またはインデックスですか?このスレッドを見て、問題が解決したかどうかを確認してください:http://dba.stackexchange.com/questions/112513/error-1091-42000-cant-drop-created-date-check-that-c​​olumn-key-存在する。 –

+0

カラム名ではなくキー名を使用する必要があります – Jens

+2

'SHOW CREATE TABLE TRAVELTIME'このqeryを実行すると結果があなたの質問を編集します – Mihai

答えて

1

FOREIGN KEYが定義されたカラムはtravelidだったが、それが作成されたとき、あなたはおそらく制約自体の識別子を指定していない、とMySQLがあなたに代わって1を作成しました:traveltime_ibfk_1 ...それは識別子あなたですALTER声明でターゲティングする必要があります。

ALTER TABLE traveltime DROP FOREIGN KEY traveltime_ibfk_1 

それは視覚的に解析することは困難ですが、MySQL's ALTER TABLE docsは、指定し、それを定義することが可能であるため、fk_symbolが(むしろそれが定義された列よりも、制約の識別子名をある

ALTER [IGNORE] TABLE tbl_name 
    [alter_specification [, alter_specification] ...] 
    [partition_options] 

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

...マルチカラムFK's)。