syrine01 Posté 25 Décembre 2013 Posté 25 Décembre 2013 j'ai un petit souci avec cette erreur ! Cela fait 4h que je cherche sur le net mais je ne trouve rien qui me permet de résoudre le problème pour les 2 tables. lorsque j'insère une une demande de congé ou d'absence dans la table demande ili affiche cet erreur :Cannot add or update a child row: a foreign key constraint fails (`grh`.`demandes`, CONSTRAINT `hyht` FOREIGN KEY (`id_demande`) REFERENCES `login` (`id_login`) ON DELETE CASCADE ON UPDATE CASCADE) Voici mes requêtes de création de table employées: CREATE TABLE IF NOT EXISTS `employees` ( `id_employe` int(11) NOT NULL, `nom` varchar(20) NOT NULL, `prenom` varchar(20) NOT NULL, `CIN` int(10) NOT NULL, `tel` int(10) NOT NULL, `etatcivil` varchar(20) NOT NULL, `dateN` date NOT NULL, `sexe` varchar(20) NOT NULL, `situation` varchar(20) NOT NULL, `nbreenfants` int(5) NOT NULL, `adresse` varchar(20) NOT NULL, `ville` varchar(20) NOT NULL, `email` varchar(20) NOT NULL, PRIMARY KEY (`id_employe`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Voici le code de la création de table demande: CREATE TABLE IF NOT EXISTS `demandes` ( `id` int(11) NOT NULL, `id_demande` int(11) NOT NULL, `nom` varchar(20) NOT NULL, `prenom` varchar(20) NOT NULL, `departement` varchar(20) NOT NULL, `cause` varchar(20) NOT NULL, `datedebut` date NOT NULL, `datefin` date NOT NULL, `nbrejours` int(11) NOT NULL, `type` varchar(20) NOT NULL, `statut` text NOT NULL, PRIMARY KEY (`id`), KEY `id_demande` (`id_demande`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='stocke les demandes des congés et d’absences '; Quelqu'un a t il une idée ? Je n'ai pas l'impression que mes contraintes soient mauvaises ! Merci d'avance
Message populaire. Dadou Posté 25 Décembre 2013 Message populaire. Posté 25 Décembre 2013 Dans les scripts de création de table, on ne voit pas les déclarations des clés étrangères, seulement au vu de ton message d'erreur, il doit y en avoir. Ce qui me fait penser que tes scripts de création ne sont pas a jour 1
syrine01 Posté 25 Décembre 2013 Auteur Posté 25 Décembre 2013 (modifié) oui c'est vrai pour la table "employees" je n'ajoute pas de clé étrangére car j'ai pas le besoin mais pour la table "demande " j'ai ajouter une clé etrangére voila ici est ce que il faut modifier manuellement !!! Modifié 25 Décembre 2013 par syrine01
Dadou Posté 25 Décembre 2013 Posté 25 Décembre 2013 Elle ne me parait pas logique ta clé, pourquoi as tu liés id_demande à id_login? normalement la clé étrangère représente le même élément dans des tables différentes. Ton message d'erreur est lié au fait que mysql ne trouve pas d'id_login = id_demande
syrine01 Posté 25 Décembre 2013 Auteur Posté 25 Décembre 2013 j'ai liée le id_demande avec id_login car j'ai besoin d'affiche cette demande pour employe selon id_login c'est a dire on va affiché la demande d'employé de id_login =2 comment je peux le corrigé et merci
Dadou Posté 25 Décembre 2013 Posté 25 Décembre 2013 Pour une logique convenable il aurait été préférable de nommer le champs id_demande en id_login. Par contre l'erreur sera toujours la, puisque mysql ne trouve pas l'id_login correspondant
syrine01 Posté 26 Décembre 2013 Auteur Posté 26 Décembre 2013 donc le problème se trouve toujours , il faut supprimer cette base et crée une autre , ça sa qui tu veux le dire !
Dadou Posté 26 Décembre 2013 Posté 26 Décembre 2013 Non ce n'est pas ça que je veux dire. Le problème, je te l'ai dit 2 fois déjà, quand tu fais ton insertion, il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login
syrine01 Posté 26 Décembre 2013 Auteur Posté 26 Décembre 2013 merci pour votre réponse mais comment je corrige ce probléme!! car j'ai besion de cette clé étrangére pour afficher la demande pour chaque employé selon le id_login plz aider moi et encore mercii
Dadou Posté 27 Décembre 2013 Posté 27 Décembre 2013 Qu'est ce que tu n'as pas compris dans ma réponse, je te dis exactement ce que tu dois faire
syrine01 Posté 27 Décembre 2013 Auteur Posté 27 Décembre 2013 (modifié) comment je peux faire ça en SQL "il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login" est ce que ce doit initialiser le id_demande et id_login NULL !! Modifié 27 Décembre 2013 par syrine01
Dadou Posté 27 Décembre 2013 Posté 27 Décembre 2013 Que n'arrives tu pas a comprendre dans cette phrase, elle est pourtant simple non? quand tu fais ton insertion, il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login A aucun moment je ne parle de valeur NULL, je te parle d'une valeur existante dans la table login
syrine01 Posté 27 Décembre 2013 Auteur Posté 27 Décembre 2013 oui merci bcp j'ai résoudre le problème de cette erreur mais lorsque le méme utilisateur faire une autre demande il affiche ce msg :" Duplicate entry '1' for key 'PRIMARY'" et la demande ne sera pas stockée dans bd , plz comment j’évite ce probléme merci
Dadou Posté 27 Décembre 2013 Posté 27 Décembre 2013 C'est ton champs id qui doit s’incrémenter, il est courant de mettre les clés primaires en auto_increment
syrine01 Posté 27 Décembre 2013 Auteur Posté 27 Décembre 2013 oui merci j'ai corrigé ce probléme mais le id_demande me prend pas les valeurs de l'id_login automatiquement ! car toujours il affiche la meme valeur dans la colonne de id_demande par exemple toujours 1 mais c'est pas ça mon besoin , j'ai que l'id_demande pour chaque utilisateur est unique par exemple: un utilisateur de l'id_login =1 fait sa demande , elle est stockée dans la table demande avec id_demande =1 et un autre utilisateur de l'id_login =2 fait sa demande , elle est stockée dans la table demande avec id_demande =2 comment faire corrigé ce probléme!!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant