Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils 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 05/01/2008, 16h55   #1
Membre régulier
 
Inscription : décembre 2002
Messages : 163
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 163
Points : 77
Points : 77
Par défaut Erreur création table avec cle etrangere

Bonjour,

J'essaye désespérément de créer une table avec des clés étrangères mais ca ne fonctionne pas. C'est la seule table qui ne fonctionne pas, les autres tables avec clés étrangères ont été créées sans aucun problème.

Cette table est OK:
Code :
1
2
3
4
5
6
7
 
CREATE TABLE t_QteOptVeh (
  `FK_Vehicule` INT NOT NULL, CONSTRAINT `FK_Vehicule_OV` FOREIGN KEY(`FK_Vehicule`) REFERENCES `T_Vehicule`(`IdVehicule`),
  `FK_Option` INT  NOT NULL, CONSTRAINT `FK_Option_OV` FOREIGN KEY(`FK_Option`) REFERENCES `T_Options`(`IdOption`),
  `QteMax` INT NOT NULL,
  CONSTRAINT `PK_VehOpt` PRIMARY KEY(`FK_Vehicule`,`FK_Option`)
) TYPE = INNODB CHARACTER SET latin1 COLLATE latin1_swedish_ci;
Et voici la table qui ne se crée pas:
Code :
1
2
3
4
5
6
7
 
CREATE TABLE t_QteOptLoc (
  `FK_Location` INT NOT NULL, CONSTRAINT `FK_Location_OL` FOREIGN KEY(`FK_Location`) REFERENCES `T_Location`(`IdLocation`),
  `FK_QteOptVeh` INT NOT NULL, CONSTRAINT `FK_Option_OL` FOREIGN KEY(`FK_QteOptVeh`) REFERENCES `T_QteOptVeh`(`FK_Vehicule`,`FK_Option`),
  `QteLouee` INT NOT NULL,
  PRIMARY KEY(`FK_Location`,`FK_QteOptVeh`)
) TYPE = INNODB CHARACTER SET latin1 COLLATE latin1_swedish_ci;
J'ai chaque fois cette erreur: #1005 - Can't create table '.\nouvelle_db\t_qteoptloc.frm' (errno: 150)

La deuxième clé étrangère de cette table correspond en fait a la clé primaire de la première table citée. Le problème c'est que la clé primaire est composée de 2 champs et je ne sais pas pourquoi il ne l'accepte pas ?

Erreur dans un nom ou paramètre ???

Merci
cd090580 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2008, 19h08   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
Erreur dans un nom ou paramètre ???
...ou erreur dans la modélisation... !

D'où l'utilité de travailler avec un outil de modélisation dans lequel on "importe" les FK.
Citation:
Envoyé par Manuel MySQL
Les colonnes correspondantes de la contrainte dans la table et la table de référence doivent avoir le même type
et dans ton exemple, tu as 1 INT d'un coté, et 2 de l'autre
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2008, 19h17   #3
Membre régulier
 
Inscription : décembre 2002
Messages : 163
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 163
Points : 77
Points : 77
Je dois modifier quoi vu que la clé primaire de la première table est composée de 2 champs ?????

Et dans phpmyadmin, je n'ai pas l'option pour choisir la clé primaire composée des 2 champs. Ils sont listés tous les 2.
cd090580 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 17h21.


 
 
 
 
Partenaires

Hébergement Web