Не удается удалить внешний ключ в MySQL

У меня было от 1 до многих отношений между курсом и инструктором, которые я хотел отбросить. Когда я попытался сбросить идентификатор инструктора в таблице курса, он мне это сказал. Я не мог отказаться от него, поскольку это был внешний ключ. Затем я решил сбросить его вот так:

ALTER TABLE course DROP FOREIGN KEY instructorID

Но я получаю эту ошибку:

#1091 - Can't DROP 'InstructorID'; check that column/key exists 

Я не понимаю, что означает эта ошибка. Что я делаю не так?

Ответ 1

Запустите SHOW CREATE TABLE course;, чтобы удостовериться, что certorID является именем внешнего ключа .

Дополнительно: Ошибка означает, что MySQL ищет ограничение внешнего ключа с именем "InstructorID", но нет ограничения с таким именем, возможно, это имя вашего столбца, но вы должны использовать имя ограничения для удаления внешних ключей.

Ответ 2

После запуска SHOW CREATE table course; вы должны найти символ fk, который обычно похож на один ниже:

(course_ibfk_1) 

он может отличаться в зависимости от вашей версии mysql, которую вы используете, затем удалите внешний ключ с помощью символа fk следующим образом:

alter table course drop foreign key course_ibfk_1;

Ответ 3

Вам нужно удалить "ограничение внешнего ключа" и "ключ".

 Изменять внешний ключ таблицы < constraint_name >  Изменить палец клавиши

Ответ 4

причина, по которой вы не можете удалить InstructorID, заключается в том, что вам нужно использовать имя ограничения внешнего ключа. KevDev указал, что вы должны запустить "SHOW CREATE TABLE course", чтобы найти имя ограничения. после этого вы можете удалить внешний ключ. НО подождите больше, "ключ" по-прежнему остается позади, который должен быть удален. Вы можете запустить курс "SHOW CREATE TABLE", чтобы проверить, что ключ все еще позади. после проверки того, что он все еще там, выполните то, что посоветовал Бобби. "Alter table drop key", при этом вы полностью удалили внешний ключ

Ответ 5

Чтобы отменить ограничение FOREIGN KEY:

MySQL:

ALTER TABLE Orders DROP FOREIGN KEY {Constraint/Key_name};

Для SQL Server/Oracle/MS Access:

ALTER TABLE Orders DROP CONSTRAINT {Constraint/Key_name};