Erreur 1452 : Cannot add or update a child row [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 15-05-2007 à 11:38:22
1/ vide la table fille destination
2/ vide la table mère destination
3/ rempli la table mère destination
4/ rempli la table fille destination
Marsh Posté le 15-05-2007 à 11:39:07
ou alors désactive la FK durant l'allimentation, mais il vaut mieux la conserver tout au long du traîtement, ça permettra de détecter les éventuelles incohérences dans le point 4.
Marsh Posté le 15-05-2007 à 11:40:26
le "on delete" sur un FK (je le vois pas dans ta déclaration par contre) permet de "cascade" le delete d'une mère sur ses filles.
=> tu effaces une lignes dans la table mère, et toutes ses filles sont détruites en même temps, plutôt que de lever une erreur.
Marsh Posté le 15-05-2007 à 12:58:06
MagicBuzz a écrit : 1/ vide la table fille destination |
Au départ, mes tables sont vides et après je rempli d'abord la mère et après la fille. C'est ça que je ne comprend pas
Merci pour toutes les explications. Je respire mieux déjà
Marsh Posté le 15-05-2007 à 15:58:50
Sinon, un truc que je pige pas...
Le message d'erreur parle de la FK "fk_entrg_apeados1_1"
=> Je ne la vois pas dans la définition de la table que tu as posté. A mon avis, tu ne cherches pas au bon endroit...
PS : Vérifie si tu n'as pas un trigger quelquepart, comme fouteurs de merde, ils se posent là quand on fait ce genre de maintenance
Marsh Posté le 15-05-2007 à 17:00:10
MagicBuzz a écrit : Sinon, un truc que je pige pas... |
Oui c'est normal . MaTable1 et MaTable2 sont des exemples.
fk_entrg_apeados1_1 provient d'une vraie table que j'utilise.
MagicBuzz a écrit : |
Je n'en ai pas, ou alors MySQL me joue des tours et aime me faire poiroter mais je ne pense pas que ce soit son genre ^^
Et pour fini, je viens de comprendre mon erreur. En réalité, dans mes tables existantes, des données dans la table mère ont été supprimées. Alors forcément si j'ajoute des données dans la table fille qui ne le sont pas dans la mère... il y a erreur.
Marsh Posté le 14-05-2007 à 17:46:37
Bonjour,
Je travail sur MySQL 5.0.37-nt
J'ai 2 tables en InnoDB. L'une à un index qui fait une référence à un champ sur l'autre table.
Voici l'illustration :
Je copie des données provenant d'une autre base de données dans la MaTable1, ensuite je copie les données provenant de cette autre base de données mais de table différente dans MaTable2. Le problème est que MySQL me génère une erreur :
Il va de soit que, dans la base de données existante, les données de la clé primaire sont présentes aussi bien dans la table mère que dans la table fille.
Cette erreur j'arrive à la contourner en supprimant mes références mais ca commence à devenir contraignant pour ma base et les tables que j'avais défini. J'aimerais savoir d'où ça vient? Et pourquoi? Serait-ce parce que la valeur d'un index n'est pas présent dans les valeurs de la clé primaire ?
Au passage, serait-il possible de m'expliquer synthétiquement le principe du ON DELETE c'est-à-dire qui agit sur qui et quels sont les actions produites ?
Je vous remercie pour votre aide et votre patiente.
Message édité par AlphaZone le 15-05-2007 à 17:06:49