GROS GROS GROS GROS PB MYSQL

Résolu
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   -  
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Désolé pour les majuscule mais je crois que je vais explosé ce p**** d'ordi de m**** a la c** !

Bref voila mon problème : j'ai deux tables, adherents et sites. Voila le code :

Adherents :
CREATE TABLE IF NOT EXISTS `adherents` (
  `id` int(5) NOT NULL auto_increment,
  `mail` varchar(30) NOT NULL,
  `pseudo` varchar(20) NOT NULL,
  `pass` varchar(40) NOT NULL default '137d6caf429ce73a44ad08b6fedf17ec',
  `droits` varchar(10) NOT NULL default 'Adhérent',
  `statut` varchar(30) NOT NULL,
  `bloque` int(1) NOT NULL default '0',
  `age` int(2) NOT NULL,
  `sexe` char(1) NOT NULL,
  `pays` varchar(20) NOT NULL,
  `villecp` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


--
-- Contraintes pour la table `adherents`
--
ALTER TABLE `adherents`
  ADD CONSTRAINT `adherents_ibfk_1` FOREIGN KEY (`id`) REFERENCES `sites` (`id_auteur`) ON DELETE CASCADE ON UPDATE CASCADE;



Et ma table sites :
CREATE TABLE IF NOT EXISTS `sites` (
  `id` int(5) NOT NULL auto_increment,
  `url` varchar(50) NOT NULL,
  `texte` text NOT NULL,
  `description` text NOT NULL,
  `id_auteur` int(5) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `id_auteur` (`id_auteur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Je précise que LES 2 TABLES SONT VIDES !!!!!!!!!!!!!!!!!!!!!!

Mon problème : je ne PEUT PAS ajouter d'enregistrements dans adherents.

Et pour en ajouter dans sites, il faut l'id de l'adhérent, puisque les deux sont reliés...

DONC SI POSSIBLE MERCI DE M'AIDER AVANT QUE JE FASSE UN MEURTRE !!!!

8 réponses

hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   51
 
Ps : le message d'erreur MySQL est :
#1452 - Cannot add or update a child row: a foreign key constraint fails (`libcom_b1/adherents`, CONSTRAINT `adherents_ibfk_1` FOREIGN KEY (`id`) REFERENCES `sites` (`id_auteur`) ON DELETE CASCADE ON UPDATE CASCADE)
0
Blocks Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
Aucune erreur pour ma base de données...
0
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   51
 
Mais alors quoiiiiiiiiiiiiiiiiiiiiiiiiiii ??????????????????,

AAAAAAAAAAAAAAAAA je vais devenir fou !!!!!!!!!!!!!!!!!!!!!!!!! (si ce n'est pas déjà le cas)
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
"Et pour en ajouter dans sites, il faut l'id de l'adhérent, puisque les deux sont reliés... "

heu où ca ?
là moi je vois que pour ajouter dans adhérent, il faut que ca soit dans site, pas l'inverse
0
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   51
 
AAAAAAAAA donc j'ai fait la liaison à l'envers ? Et pourtant, tout a l'heure je l'avais fait dans l'autre sens, et ça me mettait quand j'ajoutais un enregistrement dans site "Cannot add or update a child row: a foreign key constraint fails (`libcom_b1/sites`, CONSTRAINT `sites_ibfk_1` FOREIGN KEY (`id_auteur`) REFERENCES `adherents` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)" !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Heryu Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   62
 
C'est le cas oui !
0
hatonis Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Salut.

En fait, j'ai l'impression que tes deux tables sont dépendantes l'une par rapport à l'autre. Je veux dire par là, que pour créer un adhérent, tas besoin d'un site et pour créer un site, tas besoin d'un adhérent. Du coup, tu ne pourras rien rajouter, je pense. enfin bon, c'est ce que j'ai cru comprendre...

Essaie de supprimer l'une des deux dépendances peut etre...

De plus, tu as fait une contraine de clé étrangère sur adhérent qui suppose que son id doit etre présente dans 'sites'. Donc un adhérent a forcément un site...?


Tiens nous au jus.
0
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   51
 
Et bien en faite, un adhérent n'a pas forcément un site, mais dans site, pour savoir qui est l'auteur, je met "id_adherent", comme ça avec une requette, on sait qui a posté tel site..
.
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
"un adhérent n'a pas forcément un site"

ben alors c'est à l'envers ta contrainte ^^
0
hack_net Messages postés 783 Date d'inscription   Statut Membre Dernière intervention   51
 
Bon j'ai enfin trouvé je vous explique (et merci à tous).

J'avais vidé mes tables, et fait la relation de sites ==> adhérents, seulement mon script php mettait "0" dans id_auteur (donc message d'erreur puisque dans ma table adhérent, les id commence a 1).

Du coup, j'ai fais la relation de adhérent ==> sites (1ére erreur), puis j'ai fais une seconde relation sites ==> adherents (donc double dépendance, deuxième erreur), puis j'ai vidé toutes mes tables (donc impossibilité d'ajout dans les deux tables, 3éme erreur).

Voilà 3 bonnes grosses erreurs qui m'ont fais perde un temps fou.

Pour y remédié, j'ai mi dans mon script php "1" à la place de "0", et dans ma table adhérent, j'ai réservé l'id "1" à l'adhérent par défaut. Bref tout est bien qui finit bien, sauf pour les 3000 personnes que j'ai tués (mais ça on s'en fou :p)
0