Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 09h19   #1
Invité régulier
 
Inscription : janvier 2009
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 63
Points : 8
Points : 8
Par défaut Erreur SQL à l'insertion table relationnelle

Bonjour tous !

Voici l'erreur sql que je reçoit lors de l'insertion des données dans ma table.

Code :
Cannot ADD OR UPDATE a child row: a FOREIGN KEY constraint fails ('cybernet'.'site', CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION)
Voici la requête :

Code :
1
2
$sql = 'INSERT INTO 'site'  ('id' ,'idsiteinterne' ,'idsiteprovider','site_name' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'installerpar' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'service' ,'idetatsite' ,'idpays' ,'province' ,'telephone' ,'observation' ,'datecreation') VALUES (NULL, "'.mysql_escape_string($_POST['idsiteinterne']).'", "'.mysql_escape_string($_POST['idsiteprovider']).'","'.mysql_escape_string($_POST['site_name']).'", "'.mysql_escape_string($_POST['dateinstallation']('d-m-Y')).'" , "'.mysql_escape_string($_POST['dateactivation']('d-m-Y')).'", "'.mysql_escape_string($_POST['adressesite']).'",  "'.mysql_escape_string($_POST['installerpar']).'",  "'.mysql_escape_string($_POST['idclient']).'",  
"'.mysql_escape_string($_POST['adresseIP']).'", "'.mysql_escape_string($_POST['adresseIPmanage']).'", "'.mysql_escape_string($_POST['emailsite']).'", "'.mysql_escape_string($_POST['idprovider']).'","'.mysql_escape_string($_POST['service']).'", "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['idetatsite']).'", "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['telephone']).'", "'.mysql_escape_string($_POST['observation']).'", "'.date('Y-m-d h:i:s').'")'; mysql_query($sql) OR die('Erreur SQL !'.$sql.'<br />'.mysql_error());
glodybiss4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 09h30   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Bonjour,

Fais un echo de ta requête SQL pour qu'on ait plutôt le code SQL qu'un mélange entre PHP et SQL, et le contenu des différentes variables.

Notamment, vérifie le contenu de mysql_escape_string($_POST['idsiteprovider']), qui, visiblement, contient une valeur qui n'existe pas dans la table provider (d'où l'erreur).
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h18   #3
Invité régulier
 
Inscription : janvier 2009
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 63
Points : 8
Points : 8
Voici ma requête sql

Code :
1
2
3
4
5
INSERT INTO `cybernet`.`site` (`id` ,`idsiteinterne` ,`idsiteprovider` ,`idsurvey` ,`site_name` ,`dateactivation` ,`dateinstallation` ,`adressesite` ,`installerpar` ,`idclient` ,`adresseIP` ,`adresseIPmanage` ,`emailsite` ,`idprovider` ,`service`,`idetatsite` ,`idpays` ,`province` ,`matriculeSite` ,`telephone` ,`observation` ,`datecreation`)
VALUES (NULL , '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')
 
MySQL a répondu: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`cybernet`.`site`, CONSTRAINT `fk_site_provider` FOREIGN KEY (`idprovider`) REFERENCES `provider` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Voici mes clés étrangères

Code :
1
2
3
4
 KEY `fk_site_provider` (`idprovider`),
  KEY `fk_site_clients` (`idclient`),
  KEY `fk_site_etat_site` (`idetatsite`),
  KEY `fk_site_pays` (`idpays`)
glodybiss4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h29   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Et en copiant ta requête tu n'as pas vu que tu essaies d'insérer uniquement des valeurs NULL ou vides ?
Pas étonnant que les clés étrangères ne soient pas satisfaites !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 10h30   #5
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Tu n'as aucune valeur dans ta requête ..
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h30   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Ah ben forcément, ça ne risque pas de fonctionner...
Tu insères des chaînes vides dans tous les champs...
Le problème semble plutôt se situer côté PHP : tes variables sont vides.

[EDIT] : Ouach, le tir groupé de réponses
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h31   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Quel tir groupé !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h47   #8
Invité régulier
 
Inscription : janvier 2009
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 63
Points : 8
Points : 8
Oui, je vois c'est à dire que lorsque j'essaie d'insérer à partir de mysql il fonctionne mais il y a aussi des petites erreurs tel que :

Code :
1
2
3
4
5
1 ligne insérée.
Identifiant de la ligne insérée : 3
Warning: #1265 Data truncated for column 'adresseIP' at row 1
Warning: #1265 Data truncated for column 'adresseIPmanage' at row 1
Warning: #1264 Out of range value for column 'datecreation' at row 1
glodybiss4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h50   #9
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Quand on regarde le résultat du echo, il n'y a visiblement rien dans tes variables PHP...
Pour expliquer les warnings, il nous faudrait la requête que tu exécutes et qui les génère, ainsi que la structure de la table (visiblement, tu tentes d'insérer des chaines de caractères trop longues pour la longueur prévue dans la base).
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h25   #10
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Allez j'en rajoute une couche....

Voila la poillade de ma journée, mon rayon de soleil c'est MySQL !!!

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h33.


 
 
 
 
Partenaires

Hébergement Web