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 10/02/2011, 11h44   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 11
Points : 0
Points : 0
Par défaut Problèmes de Foreign Key

Bonjour tout le monde,

Voila mon problème, j'ai plusieurs tables : une principale (Materiel) et des sous tables (Utilisateur).

Code :
1
2
3
4
5
6
7
8
9
10
 T_Materiel
id_Materiel
Utilisateur
etc...
FOREIGN KEY (Utilisateur) REFERENCES (T_Utilisateur(id_Utilisateur));
 
      T_Utilisateur
id_Utilisateur
Utilisateur_Nom
etc...
Je veux lier les deux tables par une relation, j'utilise donc le foreign key mais à priori sa ne fonctionne pas ... Mes tables sont en InnoDB mais mon moteur de stockage en MyISAM.

Merci pour votre aide sa fait des jours que je bloque dessus. J'utilise easyphp.
KevinoOu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 14h43   #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 441
Points : 6 441
Bonjour,

Quand tu dis que ça ne fonctionne pas, peux-tu préciser exactement ce qui ne fonctionne pas ?
As-tu des messages d'erreurs et, si oui, lesquels ?

Autrement, peut-on voir le script de création des tables ? Parce que j'avoue ne pas bien comprendre ce que tu entends par des tables en InnoDB et un moteur en MyISAM...

ced
__________________
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 10/02/2011, 15h36   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 11
Points : 0
Points : 0
Salut Ced,

Pour répondre à tes questions.

'Problème de syntaxe' au niveau de ma Foreign Key. Pas plus d'infos concernant le problème sous phpmyadmin.

Voila mon code MySql.
Code :
1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS T_Materiel ;
CREATE TABLE T_Materiel (id_Materiel int AUTO_INCREMENT NOT NULL,            #int pour la clef ne peut pas être un char (Caractère)
TypeDeMateriel SMALLINT,                # Table faite.
Utilisateur int,                        # Table faite.
IP int,                                             # Champ à saisir, pas de table
PRIMARY KEY (id_Materiel) 
FOREIGN KEY (Utilisateur) REFERENCES (T_Utilisateur(id_Utilisateur))
) ENGINE=InnoDB;
Code :
1
2
3
4
5
6
7
8
/**************** TABLE UTILISATEUR ********************/
 
DROP TABLE IF EXISTS T_Utilisateur ;
CREATE TABLE T_Utilisateur (id_Utilisateur int AUTO_INCREMENT NOT NULL,
U_Nom CHAR (20),
U_Prenom CHAR (20),
U_IDReseau CHAR (20),
PRIMARY KEY (id_Utilisateur) ) ENGINE=InnoDB;
KevinoOu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h48   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 992
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 : 10 992
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Supprime les parenthèses autour de la référence :
Code :
FOREIGN KEY (Utilisateur) REFERENCES T_Utilisateur(id_Utilisateur)
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h43   #5
Invité régulier
 
Inscription : avril 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 14
Points : 6
Points : 6
Peut être as-tu simplement oublié une virgule après ta PRIMARY KEY.

Code :
1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS T_Materiel ;
CREATE TABLE T_Materiel (id_Materiel int AUTO_INCREMENT NOT NULL,            #int pour la clef ne peut pas être un char (Caractère)
TypeDeMateriel SMALLINT,                # Table faite.
Utilisateur int,                        # Table faite.
IP int,                                             # Champ à saisir, pas de table
PRIMARY KEY (id_Materiel) , #ici il te faut une virgule
FOREIGN KEY (Utilisateur) REFERENCES (T_Utilisateur(id_Utilisateur))
) ENGINE=InnoDB;
Une erreur de syntaxe c'est petit mais sa provoque de grosse erreur. Je pense que c'est pour sa qu'il situe ton erreur dans ta ligne FOREIGN KEY.
Jiner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 11h25   #6
Invité de passage
 
Inscription : janvier 2011
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 11
Points : 0
Points : 0


Je vous envois le screen du message d'erreur. Avec ou sans parenthèse et avec ou sans virgule. Je vois vraiment pas d'ou sa peut venir. Surtout que ma table utilisateur je la crée avant pour éviter que sa merde sur la liaison
KevinoOu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h15   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 992
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 : 10 992
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Code :
1
2
PRIMARY KEY (id_Materiel), -- <== C'est là qu'il faut mettre une virgule ! 
FOREIGN KEY (Utilisateur) REFERENCES T_Utilisateur(id_Utilisateur)
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h28   #8
Invité régulier
 
Inscription : avril 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 14
Points : 6
Points : 6
Mais c'est bien ce que j'avais dit! Peut être n'avais je pas été assez clair...
Jiner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h11   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 992
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 : 10 992
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Jiner Voir le message
Mais c'est bien ce que j'avais dit! Peut être n'avais je pas été assez clair...
Oui mais apparemment KevinoOu n'a pas compris puisqu'il a posté un screen sans cette fameuse virgule !
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 09h57   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 11
Points : 0
Points : 0
Oui KevinOou n'avait pas compris
Merci beaucoup pour votre réactivité ! Ça marche nickel maintenant
KevinoOu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h44.


 
 
 
 
Partenaires

Hébergement Web