Maison  >  Article  >  base de données  >  Pourquoi ALTER IGNORE TABLE échoue-t-il avec InnoDB et comment y remédier ?

Pourquoi ALTER IGNORE TABLE échoue-t-il avec InnoDB et comment y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 01:47:02289parcourir

Why Does ALTER IGNORE TABLE Fail with InnoDB and How to Workaround It?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn