{MySQL} Problème clé étrangère
Fermé
Huviel
Messages postés
3
Date d'inscription
vendredi 12 juin 2009
Statut
Membre
Dernière intervention
12 juin 2009
-
12 juin 2009 à 09:59
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 12 juin 2009 à 11:54
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 12 juin 2009 à 11:54
A voir également:
- {MySQL} Problème clé étrangère
- Clé windows 10 gratuit - Guide
- Clé usb non détectée - Guide
- Clé bootable windows 10 - Guide
- Mysql community server - Télécharger - Bases de données
- Clé usb 2to vrai ou faux - Accueil - Stockage
5 réponses
sya21
Messages postés
425
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
7 janvier 2010
43
12 juin 2009 à 10:03
12 juin 2009 à 10:03
il faut préciser une clé étrangére foreign key dans l'une des 2 tables
Huviel
Messages postés
3
Date d'inscription
vendredi 12 juin 2009
Statut
Membre
Dernière intervention
12 juin 2009
12 juin 2009 à 10:10
12 juin 2009 à 10:10
C'est ce que j'ai fais dans la table utilisateur. Sauf que PhpMyAdmin à remis sa syntaxe par dessus ce qui donne ça pour ma FK "KEY `id_statut` (`statut`)"
sya21
Messages postés
425
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
7 janvier 2010
43
12 juin 2009 à 10:11
12 juin 2009 à 10:11
ah d'accord désole je vois pas
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
12 juin 2009 à 10:23
12 juin 2009 à 10:23
Bonjour,
ton problème est du au moteur de base de données que tu utilises, à savoir MyISAM.
Ce moteur ne gère pas les contraintes d'intégrité référentielles. Donc il lit les contraintes
de clés étrangères FOREIGN KEY mais n'en tient pas compte.
Il te faut utiliser le moteur InnoDB pour gérer les clés étrangères.
Bonne suite.
ton problème est du au moteur de base de données que tu utilises, à savoir MyISAM.
Ce moteur ne gère pas les contraintes d'intégrité référentielles. Donc il lit les contraintes
de clés étrangères FOREIGN KEY mais n'en tient pas compte.
Il te faut utiliser le moteur InnoDB pour gérer les clés étrangères.
Bonne suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Huviel
Messages postés
3
Date d'inscription
vendredi 12 juin 2009
Statut
Membre
Dernière intervention
12 juin 2009
12 juin 2009 à 10:28
12 juin 2009 à 10:28
Alors je viens de passer toute mes tables InnoDB mais rien ne change :'(
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
12 juin 2009 à 11:54
12 juin 2009 à 11:54
ça ne suffit pas, il aurait fallu créer ta table comme ceci :
CREATE TABLE IF NOT EXISTS `utilisateur` (
`id_util` int(11) NOT NULL AUTO_INCREMENT,
`nom_util` varchar(20) NOT NULL,
`prenom_util` varchar(20) NOT NULL,
`login` varchar(20) NOT NULL,
`pass` varchar(20) NOT NULL,
`statut` int(11) NOT NULL,
PRIMARY KEY (`id_util`),
FOREIGN KEY (`statut`)
REFERENCES `statut`(`id_statut`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
As-tu pensé à rajouter la contrainte de clé étrangère ?
P.S.
J'ai testé tes scripts avec phpMyAdmin 3.1.3 et ça m'a plutôt l'air de fonctionner.
Mes valeurs de test :
table utilisateur:
insert into utilisateur( `nom_util` , `prenom_util` ,`login` , `pass` , `statut` )
values ('DUCK', 'Riri','Ririlog','Riripass', 1),
('DUCK', 'Fifi','Fifilog','Fifipass', 2),
('DUCK', 'Loulou','Louloulog','Louloupass', 3);
table statut :
insert into statut( `id_statut` , `intitule_statutl` )
values (1, 'premier'),
(2, 'deuxieme'),
(3, 'troisieme');
en exécutant ta requête, j'obtiens ceci:
nom_util prenom_util intitule_statut
DUCK Riri premier
DUCK Fifi deuxieme
DUCK Loulou troisieme
Vérifies tes opérations et au besoins refais tourner ton script.
CREATE TABLE IF NOT EXISTS `utilisateur` (
`id_util` int(11) NOT NULL AUTO_INCREMENT,
`nom_util` varchar(20) NOT NULL,
`prenom_util` varchar(20) NOT NULL,
`login` varchar(20) NOT NULL,
`pass` varchar(20) NOT NULL,
`statut` int(11) NOT NULL,
PRIMARY KEY (`id_util`),
FOREIGN KEY (`statut`)
REFERENCES `statut`(`id_statut`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
As-tu pensé à rajouter la contrainte de clé étrangère ?
P.S.
J'ai testé tes scripts avec phpMyAdmin 3.1.3 et ça m'a plutôt l'air de fonctionner.
Mes valeurs de test :
table utilisateur:
insert into utilisateur( `nom_util` , `prenom_util` ,`login` , `pass` , `statut` )
values ('DUCK', 'Riri','Ririlog','Riripass', 1),
('DUCK', 'Fifi','Fifilog','Fifipass', 2),
('DUCK', 'Loulou','Louloulog','Louloupass', 3);
table statut :
insert into statut( `id_statut` , `intitule_statutl` )
values (1, 'premier'),
(2, 'deuxieme'),
(3, 'troisieme');
en exécutant ta requête, j'obtiens ceci:
nom_util prenom_util intitule_statut
DUCK Riri premier
DUCK Fifi deuxieme
DUCK Loulou troisieme
Vérifies tes opérations et au besoins refais tourner ton script.