suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Der durch die MySQL-Fremdschlüsseleinschränkung erforderliche Index kann nicht gelöscht werden

<p>Ich muss meine vorhandene Datenbank ändern, um eine Spalte hinzuzufügen. Daher möchte ich auch das Feld UNIQUE aktualisieren, um diese neue Spalte aufzunehmen. Ich versuche, den aktuellen Index zu löschen, erhalte jedoch weiterhin die Fehlermeldung <code>MySQL kann den in einer Fremdschlüsseleinschränkung benötigten Index nicht löschen</code></p> <pre class="brush:php;toolbar:false;">CREATE TABLE mytable_a ( ID TINYINT NICHT NULL AUTO_INCREMENT PRIMÄRSCHLÜSSEL, Name VARCHAR(255) NICHT NULL, Einzigartiger Name) ) ENGINE=InnoDB; TABELLE ERSTELLEN mytable_b ( ID TINYINT NICHT NULL AUTO_INCREMENT PRIMÄRSCHLÜSSEL, Name VARCHAR(255) NICHT NULL, Einzigartiger Name) ) ENGINE=InnoDB; TABELLE ERSTELLEN mytable_c ( ID TINYINT NICHT NULL AUTO_INCREMENT PRIMÄRSCHLÜSSEL, Name VARCHAR(255) NICHT NULL, Einzigartiger Name) ) ENGINE=InnoDB; TABELLE „mytable“ ERSTELLEN ( `ID` int(11) NOT NULL AUTO_INCREMENT, „AID“ tinyint(5) NICHT NULL, „BID“ tinyint(5) NICHT NULL, „CID“ tinyint(5) NICHT NULL, PRIMÄRSCHLÜSSEL („ID“), EINZIGARTIGER SCHLÜSSEL „AID“ („AID“, „BID“, „CID“), SCHLÜSSEL „BID“ („BID“), SCHLÜSSEL `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; FEHLER 1553 (HY000): Index „AID“ kann nicht gelöscht werden: erforderlich in einer Fremdschlüsseleinschränkung</pre> <p><br /></p>
P粉882357979P粉882357979528 Tage vor609

Antworte allen(2)Ich werde antworten

  • P粉056618053

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

    步骤1

    列出外键(注意与索引名称不同)

    SHOW CREATE TABLE  <表名>

    结果将显示外键名称。

    格式:

    CONSTRAINT `FOREIGN_KEY_NAME` FOREIGN KEY (`FOREIGN_KEY_COLUMN`) REFERENCES `FOREIGN_KEY_TABLE` (`id`),

    步骤2

    删除(外键/主键/键)

    ALTER TABLE <表名> DROP FOREIGN KEY <外键名称>

    步骤3

    删除索引。

    Antwort
    0
  • P粉043566314

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

    你必须删除外键。在MySQL中,外键会自动在表上创建一个索引(这个SO问题有关此主题)。

    ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ;

    Antwort
    0
  • StornierenAntwort