CREATE TABLE LIEU
( Nom_Lieu varchar(60), -- Pour inclure des endroits importants qui ne sont pas des monuments Exemple: Rives du Lez pour le FISE
ID_Lieu numeric(6), -- 6 caracteres dont le premier commence par un 9
Ville varchar(60),
Longitude varchar(15),
Latitude varchar(15),
Type_Lieu varchar(50),
Description varchar(500),
PRIMARY KEY(ID_Lieu)
);
CREATE TABLE QUESTION
( Sujet varchar(60), -- les sujets peuvents êtres des monuments,personnes célébres
ID_Question numeric(6), -- 6 caracteres dont le premier commence par un 5
Domaine varchar(30), -- pour repertorier les questions suivant leurs domaine ex histoire,géo...
Enonce varchar(300),
Reponse varchar(50),
Mauvaisereponse1 varchar(50),
Mauvaisereponse2 varchar(50),
Mauvaisereponse3 varchar(50),
PRIMARY KEY(ID_Question),
FOREIGN KEY (Sujet) references LIEU(Nom_Lieu)
);
Lorsque je veux les importer sur phpmyadmin ( sur xamp ) j'obtient cette erreur:
requête SQL:
CREATE TABLE QUESTION(
Sujet varchar( 60 ) ,
-- les sujets peuvents êtres des monuments,personnes célébres
ID_Question numeric( 6 ) ,
-- 6 caracteres dont le premier commence par un 5
Domaine varchar( 30 ) ,
-- pour repertorier les questions suivant leurs domaine ex histoire,géo...
Enonce varchar( 300 ) ,
Reponse varchar( 50 ) ,
Mauvaisereponse1 varchar( 50 ) ,
Mauvaisereponse2 varchar( 50 ) ,
Mauvaisereponse3 varchar( 50 ) ,
PRIMARY KEY ( ID_Question ) ,
FOREIGN KEY ( Sujet ) REFERENCES LIEU( Nom_Lieu )
);
MySQL a répondu: Documentation
#1005 - Can't create table 'TER.QUESTION' (errno: 150) (<a href="server_engines.php?engine=InnoDB&page=Status&token=7396158020353e773332ee1bc00c5ab0">Détails...</a>)
Je ne vois pas ou est l'erreur.
Merci!!
[EDIT] L'erreur vient de : FOREIGN KEY ( Sujet ) REFERENCES LIEU( Nom_Lieu ), mais pourquoi???
La colonne cible référencée doit être indexée, et généralement on utilise la clé primaire.
Essaie:
CREATE TABLE LIEU
( Nom_Lieu varchar(60), -- Pour inclure des endroits importants qui ne sont pas des monuments Exemple: Rives du Lez pour le FISE
ID_Lieu numeric(6), -- 6 caracteres dont le premier commence par un 9
Ville varchar(60),
Longitude varchar(15),
Latitude varchar(15),
Type_Lieu varchar(50),
Description varchar(500),
PRIMARY KEY(ID_Lieu),
INDEX (Nom_Lieu) -- LIGNE MODIFIEE !
) ENGINE=INNODB;
CREATE TABLE QUESTION
( Sujet varchar(60), -- les sujets peuvents êtres des monuments,personnes célébres
ID_Question numeric(6), -- 6 caracteres dont le premier commence par un 5
Domaine varchar(30), -- pour repertorier les questions suivant leurs domaine ex histoire,géo...
Enonce varchar(300),
Reponse varchar(50),
Mauvaisereponse1 varchar(50),
Mauvaisereponse2 varchar(50),
Mauvaisereponse3 varchar(50),
PRIMARY KEY(ID_Question),
FOREIGN KEY (Sujet) references LIEU(Nom_Lieu)
) ENGINE=INNODB;
D'ailleurs pourquoi utiliser un libellé comme clé étrangère ?? à part pour dupliquer de l'info bêtement
Tracker.
[mySQL] erreur #1005 incompréhensible
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.