Der durch die MySQL-Fremdschlüsseleinschränkung erforderliche Index kann nicht gelöscht werden
P粉882357979
2023-08-14 13:34:46
<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>
步骤1
列出外键(注意与索引名称不同)
结果将显示外键名称。
格式:
步骤2
删除(外键/主键/键)
步骤3
删除索引。
你必须删除外键。在MySQL中,外键会自动在表上创建一个索引(这个SO问题有关此主题)。