Maison >base de données >tutoriel mysql >Comment résoudre l'erreur MySQL 1452 : échec de la contrainte de clé étrangère ?

Comment résoudre l'erreur MySQL 1452 : échec de la contrainte de clé étrangère ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-23 11:17:14770parcourir

How to Resolve MySQL Error 1452: Foreign Key Constraint Fails?

Erreur MySQL 1452 : l'ajout ou la mise à jour d'une ligne enfant échoue en raison d'une contrainte de clé étrangère

Lors de la tentative d'ajout d'une clé étrangère à la table sourcecodes_tags en faisant référence à la table des codes sources, une erreur se produit : "Erreur MySQL 1452 - Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue."

Comprendre le problème

Cette erreur indique généralement que les valeurs sourcecode_id présentes dans la table sourcecodes_tags n'existent pas en tant que valeurs de clé primaire correspondantes ( id) dans le tableau des codes sources. MySQL applique l'intégrité référentielle, garantissant que les clés étrangères font référence à des clés primaires valides dans les tables parentes.

Résoudre l'erreur

Pour résoudre cette erreur, il est nécessaire d'identifier et supprimez les valeurs orphelines sourcecode_id de la table sourcecodes_tags. Exécutez la requête suivante pour rechercher les valeurs de clé primaire manquantes :

SELECT DISTINCT sourcecode_id FROM
sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id
WHERE sc.id IS NULL;

Cette requête renverra une liste de valeurs sourcecode_id qui ne sont pas présentes dans la table des codes sources. Une fois identifiées, ces valeurs orphelines peuvent être supprimées à l'aide de l'instruction DELETE :

DELETE FROM sourcecodes_tags WHERE sourcecode_id IN (SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL);

Après avoir supprimé les valeurs orphelines, réexécutez l'instruction ALTER TABLE pour ajouter la clé étrangère :

ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE;

Cela devrait réussir à créer la contrainte de clé étrangère sans aucune erreur.

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