1. ホーム
  2. マイスル

[解決済み】MySQLが一部の外部キーを削除する件

2022-04-18 16:16:19

質問

主キーが他のいくつかのテーブルで使用されているテーブルがあり、他のテーブルへの外部キーをいくつか持っています。

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;

問題は、外部キーカラムの1つ(例えばlocationIDX)を削除しようとすると、エラーが発生することです。

"ERROR 1025 (HY000): 名前の変更でエラー"

このエラーを出さずに、上の代入表の列を削除するにはどうしたらいいですか?

どのように解決するのですか?

説明の通り こちら のようです。 外部キー 制約を削除する必要があります。 制約名 であり インデックス という名前になります。

という構文になります。

ALTER TABLE footable DROP FOREIGN KEY fooconstraint;