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 ?

Pourquoi ALTER IGNORE TABLE échoue-t-il en cas de violation de contrainte d'intégrité même lors de l'utilisation d'IGNORE ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 21:48:02656parcourir

Why Does ALTER IGNORE TABLE Fail with Integrity Constraint Violation Even When Using IGNORE?

MySQL : ALTER IGNORE TABLE échoue en raison d'une violation de contrainte d'intégrité

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!

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