ホームページ  >  に質問  >  本文

MySQL 外部キー制約で必要なインデックスを削除できません

<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>
P粉882357979P粉882357979432日前536

全員に返信(2)返信します

  • P粉056618053

    P粉0566180532023-08-15 11:27:29

    ###ステップ1###

    外部キーをリストします (インデックス名とは異なることに注意してください)

    リーリー

    結果には外部キー名が表示されます。

    ###フォーマット:### リーリー ###ステップ2###

    削除 (外部キー/主キー/キー)

    リーリー

    ステップ3

    インデックスを削除します。

    返事
    0
  • P粉043566314

    P粉0435663142023-08-15 00:33:14

    外部キーを削除する必要があります。 MySQL では、外部キーによってテーブルにインデックスが自動的に作成されます (この SO 質問 はこのトピックに関するものです)。

    リーリー

    返事
    0
  • キャンセル返事