recherche

Maison  >  Questions et réponses  >  le corps du texte

Impossible de supprimer l'index requis par la contrainte de clé étrangère MySQL

<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粉882357979P粉882357979486 Il y a quelques jours580

répondre à tous(2)je répondrai

  • P粉056618053

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

    É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.

    répondre
    0
  • P粉043566314

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

    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 ;

    répondre
    0
  • Annulerrépondre