Maison > Article > base de données > Pourquoi ALTER IGNORE TABLE échoue-t-il en cas de violation de contrainte d'intégrité même lors de l'utilisation d'IGNORE ?
L'instruction ALTER de MySQL vous permet de modifier les définitions de table, y compris l'ajout de clés uniques. L'extension de mot-clé IGNORE permet la suppression des lignes en double lors de cette opération. Cependant, des utilisateurs ont signalé avoir rencontré des erreurs de « Violation de contrainte d'intégrité » même lors de l'utilisation de IGNORE.
Problème :
Lors de l'exécution d'une instruction ALTER IGNORE TABLE pour supprimer les doublons en fonction d'une clé unique, une erreur « Violation de contrainte d'intégrité » est toujours rencontrée, contredisant les affirmations de la documentation selon lesquelles IGNORE empêche cette erreur.
Cause :
L'extension de mot-clé IGNORE semble avoir un bug dans InnoDB moteur sur certaines versions de MySQL, entraînant l'erreur.
Solution :
Pour contourner ce problème, vous pouvez temporairement convertir la table en MyISAM, ajouter l'index unique en utilisant IGNORE, puis reconvertissez-le en InnoDB.
ALTER TABLE table ENGINE MyISAM; ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field); ALTER TABLE table ENGINE InnoDB;
Remarque : Si des contraintes de clé étrangère sont présentes, vous devez d'abord les supprimer et les rajouter après la conversion.
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!