2016-05-06 4 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;

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-column-key- существует. –

+0

Вы должны использовать ключ Имя, а не имя столбца – Jens

+2

'SHOW CREATE TABLE TRAVELTIME' запустить этот qery изменить свой вопрос с результатом – Mihai

ответ

1

колонна, на которой FOREIGN KEY был определен был travelid, но вы, вероятно, не указать идентификатор для самого ограничения, когда она была создана, и MySQL создал один от вашего имени: traveltime_ibfk_1 .. Это идентификатор, необходимо настроить таргетинг в своем заявлении ALTER.

ALTER TABLE traveltime DROP FOREIGN KEY traveltime_ibfk_1 

Хотя это трудно визуально разобрать, MySQL's ALTER TABLE docs указать

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

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

... где fk_symbol это имя идентификатора ограничение, а не столбец, на котором она была определена (потому что можно определить многоколоночные FK).

Смежные вопросы