Maison > Article > base de données > Pourquoi ALTER IGNORE TABLE échoue-t-il avec InnoDB et comment y remédier ?
MySQL : Comprendre les limites d'ALTER IGNORE TABLE avec InnoDB
La commande ALTER IGNORE TABLE est destinée à aider à supprimer les doublons d'un MySQL table en ajoutant un index unique. Cependant, les utilisateurs ont rencontré des erreurs inattendues lors de l'application de cette commande, telles que l'erreur « Violation de contrainte d'intégrité ».
Selon la documentation MySQL, le mot-clé IGNORE devrait permettre d'ignorer les erreurs de clé en double pendant le processus de modification. Cependant, un bug apparent dans la version InnoDB de MySQL sur certaines versions a été identifié. Ce bug empêche le mot-clé IGNORE de fonctionner comme prévu.
En guise de solution de contournement, les utilisateurs peuvent envisager de convertir la table en MyISAM, d'ajouter l'index unique avec IGNORE, puis de reconvertir en InnoDB. Ce processus est décrit comme suit :
ALTER TABLE table ENGINE MyISAM; ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field); ALTER TABLE table ENGINE InnoDB;
Il est important de noter que cette solution peut ne pas être viable si la table a des contraintes de clé étrangère, car ces contraintes devront être supprimées avant la conversion puis ajoutées. je reviens ensuite.
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!