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
Libérer: 2024-12-23 11:17:14
original
768 Les gens l'ont consulté

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;
Copier après la connexion

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);
Copier après la connexion

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;
Copier après la connexion

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!

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