как - удалить внешний ключ mysql




MySQL Удаление некоторых внешних ключей (6)

Внешние ключи предназначены для обеспечения целостности данных, поэтому вы не можете удалить столбец, пока он является частью внешнего ключа. Сначала нужно отбросить ключ.

Я бы подумал, что следующий запрос будет делать это:

ALTER TABLE assignmentStuff DROP FOREIGN KEY assignmentIDX;

У меня есть таблица, основной ключ которой используется в нескольких других таблицах и имеет несколько внешних ключей для других таблиц.

CREATE TABLE location (
   locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
   ...
) ENGINE = InnoDB;

CREATE TABLE assignment (
   assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   locationID INT NOT NULL,
   FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
   ...
) ENGINE = InnoDB;

CREATE TABLE assignmentStuff (
   ...
   assignmentID INT NOT NULL,
   FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;

Проблема в том, что когда я пытаюсь удалить один из столбцов внешнего ключа (например, locationIDX), это дает мне ошибку.

"ОШИБКА 1025 (HY000): ошибка при переименовании"

Как я могу удалить столбец в таблице присваивания, не получив эту ошибку?


Вот способ сбросить ограничение внешнего ключа, он будет работать. location ALTER TABLE. location_id DROP FOREIGN KEY location_ibfk_1 ;


Как поясняется here , кажется, что ограничение внешнего ключа должно быть удалено по имени ограничения, а не по имени индекса. Синтаксис:

alter table footable drop foreign key fooconstraint

Как сказано выше, вы можете легко удалить FK. Однако я только заметил, что в какой-то момент может потребоваться сбросить КЛЮЧ. Если у вас есть сообщение об ошибке для создания другого индекса, такого как последний, я имею в виду одноименное имя, было бы полезно удалить все, что связано с этим индексом.

ALTER TABLE your_table_with_fk
  drop FOREIGN KEY name_of_your_fk_from_show_create_table_command_result,
  drop KEY the_same_name_as_above

Попробуй это:

alter table Documents drop
  FK__Documents__Custo__2A4B4B5E

Проверьте, что такое имя CONSTRAINT и имя FOREIGN KEY:

SHOW CREATE TABLE table_name;

Удалите оба имени CONSTRAINT и имя FOREIGN KEY:

ALTER TABLE table_name
  DROP FOREIGN KEY the_name_after_CONSTRAINT,
  DROP KEY the_name_after_FOREIGN_KEY;

Надеюсь это поможет!





mysql-error-1025