Problème de contrainte de clé étrangère MySQL : impossible d'ajouter ou de mettre à jour une ligne enfant
Lorsque vous essayez d'établir une contrainte de clé étrangère dans une table MySQL, vous peut rencontrer l'erreur 1452 : « Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue. » Ce problème se produit lorsqu'une ligne enfant dans une table fait référence à une ligne parent qui n'existe plus dans une autre table.
Dans le scénario fourni, vous essayez d'ajouter une clé étrangère dans la table sourcecodes_tags faisant référence à la table des codes sources. Cependant, le message d'erreur suggère qu'il existe des enregistrements orphelins dans la table sourcecodes_tags qui font référence à des lignes inexistantes dans la table des codes sources.
Pour résoudre ce problème, il faut d'abord identifier les enregistrements orphelins. Vous pouvez utiliser la requête suivante pour récupérer ces enregistrements :
SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL;
Une fois que vous avez identifié les enregistrements orphelins, vous pouvez les supprimer de la table sourcecodes_tags. Cela vous permettra d'ajouter avec succès la contrainte de clé étrangère.
Il est important de garantir l'intégrité référentielle dans les tables de votre base de données en appliquant des contraintes de clé étrangère. Ces contraintes évitent les incohérences des données et maintiennent les relations entre les tables. En traitant les enregistrements orphelins, vous pouvez résoudre l'erreur 1452 et établir des relations appropriées entre vos tables de base de 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!