Partage
  • Partager sur Facebook
  • Partager sur Twitter

[mySQL] erreur #1005 incompréhensible

Sujet résolu
    31 mars 2011 à 11:05:57

    Bonjour, voici mes 2 tables:

    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&amp;page=Status&amp;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???
    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2011 à 14:54:47

      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 :D

      Tracker.
      • Partager sur Facebook
      • Partager sur Twitter

      [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.
      • Editeur
      • Markdown