Violation de contrainte de clé étrangère : compréhension de l'erreur 1452 dans MySQL
Erreur MySQL 1452, "Impossible d'ajouter ou de mettre à jour une ligne enfant : une clé étrangère contrainte échoue », se produit lorsque vous tentez d'insérer ou de modifier des données dans une table enfant tout en violant une relation de clé étrangère. Cette erreur indique que l'enregistrement référencé dans la table parent est manquant ou invalide.
Dans le scénario que vous avez décrit, vous essayez d'ajouter une clé étrangère à la table sourcecodes_tags, faisant référence à la table sourcescodes. Cependant, il échoue en raison d'un conflit potentiel.
Pour résoudre ce problème, vous devez d'abord identifier s'il existe des enregistrements orphelins dans la table sourcecodes_tags. Les enregistrements orphelins sont ceux qui font référence à des lignes inexistantes dans la table des codes sources.
Pour rechercher des enregistrements orphelins, exécutez la requête suivante :
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 listera les ID de code source qui le font n'existe pas dans la table parent.
Une fois que vous avez identifié les enregistrements orphelins, vous pouvez les supprimer de la table sourcecodes_tags à l'aide d'un DELETE déclaration. Après avoir supprimé les enregistrements orphelins, vous pouvez ajouter avec succès la contrainte de clé étrangère.
De plus, il est important de vous assurer que vous insérez des ID de code source valides dans la table sourcecodes_tags. Si les identifiants insérés n'existent pas dans la table des codes sources, cela entraînera l'erreur 1452.
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!