Maison  >  Article  >  base de données  >  Pourquoi ALTER IGNORE TABLE génère-t-il toujours une erreur « Entrée en double » dans MySQL ?

Pourquoi ALTER IGNORE TABLE génère-t-il toujours une erreur « Entrée en double » dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-08 02:29:02328parcourir

Why Does ALTER IGNORE TABLE Still Throw a

MySQL : ALTER IGNORE TABLE soulève une "violation de contrainte d'intégrité" malgré la documentation

La documentation MySQL indique clairement que l'utilisation d'ALTER IGNORE TABLE, lorsqu'elle est combinée avec une CLÉ UNIQUE, devrait permettre la suppression des doublons en remplaçant toutes les erreurs de clé en double. Cependant, dans la pratique, les utilisateurs ont rencontré le message d'erreur persistant "#1062 - Entrée en double 'blabla' pour la clé 'dupidx'".

Ce comportement semble être dû à un bug dans la version InnoDB de MySQL sur certaines versions. Plus précisément, l'extension de mot-clé IGNORE ne fonctionne pas comme prévu dans le contexte InnoDB.

Solution :

Pour contourner ce problème, les utilisateurs peuvent utiliser la solution de contournement suivante :

  1. Convertissez la table en MyISAM en utilisant : ALTER TABLE table ENGINE MyISAM ;
  2. Appliquez la commande ALTER IGNORE TABLE avec UNIQUE INDEX : ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (champ);
  3. Convertissez la table en InnoDB en utilisant : ALTER TABLE table ENGINE InnoDB ;

Remarque : Si la table contient des contraintes de clé étrangère, supprimez-les et rajoutez-les sera nécessaire pour garantir l’intégrité des données.

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