ERROR 1216: Cannot add or update a child row: a foreign key constraint

ERROR 1216: Cannot add or update a child row: a foreign key constraint - SQL/NoSQL - Programmation

Marsh Posté le 12-12-2007 à 23:29:48    

Bonsoir,
 
j'ai l'erreur qui est dans le titre mais je ne comprends pas trop pourquoi et comment la corriger.
Au départ la table tDestination est vide

Code :
  1. mysql> select * from tDestination;
  2. Empty set (0.00 sec)


Ensuite, je teste la requete qui servira à remplir la table tDestination  

Code :
  1. mysql> SELECT tTable.table_i_id, car_e_country, count(*)
  2.     -> FROM tCard NATURAL JOIN tTable NATURAL JOIN tUser
  3.     -> WHERE use_ee_actions LIKE '%stat%'
  4.     -> GROUP BY car_e_country;


Le résultat de cette requete donne :

Code :
  1. +----------------+---------------+----------+
  2. | table_i_id       | car_e_country | count(*) |
  3. +----------------+---------------+----------+
  4. | 21168589893714 | France        |       17 |
  5. | 10142247654561 | Italie        |       13 |
  6. +----------------+---------------+----------+
  7. 2 rows in set (0.00 sec)


Maitenant, je remplit la table tDestination mais là, ça coince ...  

Code :
  1. mysql> REPLACE INTO tDestination(sta_i_id, des_e_country, des_i_nb)
  2.     -> SELECT tTable.table_i_id, car_e_country, count(*)
  3.     -> FROM tCard NATURAL JOIN tTable NATURAL JOIN tUser
  4.     -> WHERE use_ee_actions LIKE '%stat%'
  5.     -> GROUP BY car_e_country;
  6. ERROR 1216: Cannot add or update a child row: a foreign key constraint fails
  7. mysql>


Le champ sta_i_id de la table tDestination est une clé étrangère d'une table nommé tStat.
 
Comment corriger cela ? J'essayes depuis cet après-midi, sans succès.
 
Merci

Reply

Marsh Posté le 12-12-2007 à 23:29:48   

Reply

Marsh Posté le 13-12-2007 à 07:34:30    

Essayer

group by tTable.table_i_id, car_e_country

car normalement un group by doit inclure toutes les colonnes sauf le count(*), ou bien ne sélectionner pas tTable.table_i_id.
Il est possible qu'il y ait aussi des problèmes.

Reply

Marsh Posté le 14-12-2007 à 14:06:01    

+1 avec olivthill, même si c'est pas ce que dit la norme
 
mais sinon, je vois pas le rapport avec le message d'erreur :heink:
 
sinon, évite les NATURAL JOIN. C'est sympa à taper car prévu pour les fénéants, mais le jour où tu rajoute une seconde FK entre les table, le NATURAL va planter ou faire n'importe quoi. Passe par un INNER et des critères de jointure explicites (mais ça changera rien à l'erreur)


Message édité par MagicBuzz le 14-12-2007 à 14:06:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed