Maison > Article > base de données > Pourquoi « ALTER IGNORE TABLE » entraîne-t-il toujours des erreurs de « violation de contrainte d'intégrité » dans MySQL InnoDB ?
MySQL : résolution de l'erreur « Violation de contrainte d'intégrité » lors de ALTER IGNORE TABLE
Lors de l'utilisation de l'instruction ALTER IGNORE TABLE dans MySQL pour supprimer les doublons et créez un index unique, vous pouvez rencontrer l'erreur « Violation de contrainte d'intégrité ». Cela se produit malgré la documentation MySQL indiquant que le mot-clé IGNORE devrait empêcher de telles erreurs.
Le problème semble résider dans un bug dans la version InnoDB de MySQL pour certaines versions. L'extension IGNORE a des fonctionnalités limitées avec InnoDB, ce qui entraîne la persistance d'erreurs de clé en double malgré son utilisation.
Pour résoudre ce problème, envisagez l'approche alternative suivante :
Convertissez le table au moteur de stockage MyISAM à l'aide de la commande :
ALTER TABLE table ENGINE MyISAM;
Exécutez ALTER IGNORE TABLE instruction pour créer l'index unique :
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
Reconvertissez la table en InnoDB à l'aide de la commande :
ALTER TABLE table ENGINE InnoDB;
Notez que ceci La méthode peut ne pas fonctionner si la table a des contraintes de clé étrangère. Dans de tels cas, vous devrez supprimer temporairement ces contraintes, puis les rajouter une fois la création de l'index terminée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!