Impossible de supprimer l'index requis par la contrainte de clé étrangère MySQL
P粉882357979
P粉882357979 2023-08-14 13:34:46
0
2
593
<p>Je dois modifier ma base de données existante pour ajouter une colonne. Par conséquent, je souhaite également mettre à jour le champ UNIQUE pour inclure cette nouvelle colonne. J'essaie de supprimer l'index actuel, mais je continue de recevoir le message d'erreur <code>MySQL ne peut pas supprimer l'index nécessaire dans une contrainte de clé étrangère</code></p> <pre class="brush:php;toolbar:false;">CREATE TABLE matable_a ( ID TINYINT NON NULL CLÉ PRIMAIRE AUTO_INCREMENT, Nom VARCHAR(255) NON NULL, Nom unique) ) MOTEUR=InnoDB; CRÉER TABLE matable_b ( ID TINYINT NON NULL CLÉ PRIMAIRE AUTO_INCREMENT, Nom VARCHAR(255) NON NULL, Nom unique) ) MOTEUR=InnoDB; CRÉER TABLE matable_c ( ID TINYINT NON NULL CLÉ PRIMAIRE AUTO_INCREMENT, Nom VARCHAR(255) NON NULL, Nom unique) ) MOTEUR=InnoDB; CRÉER TABLE `matable` ( `ID` int(11) NON NULL AUTO_INCREMENT, `AID` tinyint(5) NON NULL, `BID` tinyint(5) NON NULL, `CID` tinyint(5) NON NULL, CLÉ PRIMAIRE (`ID`), CLÉ UNIQUE `AID` (`AID`,`BID`,`CID`), CLÉ `BID` (`BID`), CLÉ `CID` (`CID`), CONTRAINTE `mytable_ibfk_1` CLÉ ÉTRANGÈRE (`AID`) RÉFÉRENCES `mytable_a` (`ID`) SUR DELETE CASCADE, CONTRAINTE `mytable_ibfk_2` CLÉ ÉTRANGÈRE (`BID`) RÉFÉRENCES `mytable_b` (`ID`) SUR DELETE CASCADE, CONTRAINTE `mytable_ibfk_3` CLÉ ÉTRANGÈRE (`CID`) RÉFÉRENCES `mytable_c` (`ID`) SUR DELETE CASCADE ) MOTEUR=InnoDB; mysql> ALTER TABLE matable DROP INDEX AID ; ERREUR 1553 (HY000) : Impossible de supprimer l'index 'AID' : nécessaire dans une contrainte de clé étrangère</pre> <p><br /></p>
P粉882357979
P粉882357979

répondre à tous(2)
P粉056618053

Étape 1

Liste des clés étrangères (notez qu'elles sont différentes des noms d'index)

SHOW CREATE TABLE  <表名>

Le résultat affichera le nom de la clé étrangère.

Format :

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

Étape 2

Supprimer (clé étrangère/clé primaire/clé)

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

Étape 3

Supprimer l'index.

P粉043566314

Vous devez supprimer la clé étrangère. Dans MySQL, les clés étrangères créent automatiquement un index sur la table (cette SO question concerne ce sujet).

ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal