Maison > base de données > tutoriel mysql > Pourquoi « ALTER IGNORE TABLE » entraîne-t-il toujours des erreurs de « violation de contrainte d'intégrité » dans MySQL InnoDB ?

Pourquoi « ALTER IGNORE TABLE » entraîne-t-il toujours des erreurs de « violation de contrainte d'intégrité » dans MySQL InnoDB ?

Mary-Kate Olsen
Libérer: 2024-11-12 01:46:02
original
285 Les gens l'ont consulté

Why Does

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 :

  1. Convertissez le table au moteur de stockage MyISAM à l'aide de la commande :

    ALTER TABLE table ENGINE MyISAM;
    Copier après la connexion
  2. Exécutez ALTER IGNORE TABLE instruction pour créer l'index unique :

    ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
    Copier après la connexion
  3. Reconvertissez la table en InnoDB à l'aide de la commande :

    ALTER TABLE table ENGINE InnoDB;
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal