MySQL 外部キー制約で必要なインデックスを削除できません
P粉882357979
2023-08-14 13:34:46
<p>既存のデータベースを変更して列を追加する必要があります。したがって、UNIQUE フィールドも更新して、その新しい列を含めたいと考えています。現在のインデックスを削除しようとしていますが、エラー メッセージ「<code>MySQL Cannotdrop Index required in a external keyconstraint</code></p>」が表示され続けます。
<pre class="brush:php;toolbar:false;">CREATE TABLE mytable_a (
ID TINYINT NOT NULL AUTO_INCREMENT 主キー、
名前 VARCHAR(255) NOT NULL、
ユニークな名前)
) ENGINE=InnoDB;
CREATE TABLE mytable_b (
ID TINYINT NOT NULL AUTO_INCREMENT 主キー、
名前 VARCHAR(255) NOT NULL、
ユニークな名前)
) ENGINE=InnoDB;
CREATE TABLE mytable_c (
ID TINYINT NOT NULL AUTO_INCREMENT 主キー、
名前 VARCHAR(255) NOT NULL、
ユニークな名前)
) ENGINE=InnoDB;
CREATE TABLE `mytable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`AID` tinyint(5) NOT NULL、
`BID` tinyint(5) NOT NULL、
`CID` tinyint(5) NOT NULL、
主キー (`ID`)、
一意のキー `AID` (`AID`、`BID`、`CID`)、
キー `BID` (`BID`)、
キー `CID` (`CID`)、
CONSTRAINT `mytable_ibfk_1` FOREIGN KEY (`AID`) REFERENCES `mytable_a` (`ID`) ON DELETE CASCADE、
CONSTRAINT `mytable_ibfk_2` FOREIGN KEY (`BID`) REFERENCES `mytable_b` (`ID`) ON DELETE CASCADE、
CONSTRAINT `mytable_ibfk_3` FOREIGN KEY (`CID`) REFERENCES `mytable_c` (`ID`) ON DELETE CASCADE
) ENGINE=InnoDB;
mysql> ALTER TABLE mytable DROP INDEX AID;
エラー 1553 (HY000): インデックス 'AID' を削除できません: 外部キー制約</pre> で必要です。
<p><br /></p>
###ステップ1###
外部キーをリストします (インデックス名とは異なることに注意してください)
リーリー結果には外部キー名が表示されます。
###フォーマット:### リーリー ###ステップ2###削除 (外部キー/主キー/キー)
リーリーステップ3
インデックスを削除します。
外部キーを削除する必要があります。 MySQL では、外部キーによってテーブルにインデックスが自動的に作成されます (この SO 質問 はこのトピックに関するものです)。
リーリー