IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Erreur sur la clé étrangère


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Points : 26
    Points
    26
    Par défaut Erreur sur la clé étrangère
    Bonjour,

    J'ai besoin de votre aide, car j'essaye d'exécuter le script ci-dessous et MySQL ne veut pas à cause de la clé étrangère. Je ne comprends pas l’erreur. Pour info je suis débutant en SQL. Pourriez-vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    CREATE DATABASE IF NOT EXISTS university;
     
    USE university;
     
    CREATE TABLE  `university`.`course` (
      `id` int(11) NOT NULL auto_increment,
      `code` varchar(10) NOT NULL,
      `name` varchar(30) NOT NULL,
      `length` int(11) default NULL,
      `teacher_id` int(11) default NULL,
      PRIMARY KEY  (`id`),
      KEY `fk_teacher` (`teacher_id`),
      CONSTRAINT `fk_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 COMMENT='Cours enseignés à l''université';
     
    INSERT INTO `university`.`course` VALUES  (1,'DJ-INI','Initiation à java',4,1),
     (2,'DJ-ADV','Java, compléments',5,1),
     (3,'DJ-WEB','Java pour le Web',3,1),
     (4,'MM-UML','Analyse et conception avec UML',4,NULL),
     (5,'DJ-JSF','Framework JSF',4,NULL),
     (6,'DJ-STRUTS','Framework Struts',3,NULL);
     
    CREATE TABLE  `university`.`course_student` (
      `course_id` int(11) NOT NULL,
      `student_id` int(11) NOT NULL,
      KEY `fk_course` (`course_id`),
      KEY `fk_student` (`student_id`),
      CONSTRAINT `fk_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`id`),
      CONSTRAINT `fk_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Association entre des cours et des étudiants';
     
    CREATE TABLE  `university`.`student` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(30) NOT NULL,
      `forname` varchar(30) default NULL,
      `age` int(11) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED COMMENT='Etudiants inscrits à l''université';
     
    CREATE TABLE  `university`.`teacher` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(30) NOT NULL,
      `forname` varchar(30) default NULL,
      `age` int(11) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED COMMENT='Professeurs enseignants à l''université';
     
    INSERT INTO `university`.`teacher` VALUES  (1,'Hassler','Alexis',28);
    Merci par avance.

    Nico

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Il faut changer l'ordre de création des tables : créez la table "student" avant de créer la table "course_student".
    En effet, la seconde possède une clé étrangère qui référence la première alors qu'elle n'existe pas encore quand vous exécutez votre script.

    Essayez plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    CREATE DATABASE IF NOT EXISTS university;
     
    USE university;
     
    CREATE TABLE  `university`.`course` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `code` varchar(10) NOT NULL,
      `name` varchar(30) NOT NULL,
      `length` int(11) DEFAULT NULL,
      `teacher_id` int(11) DEFAULT NULL,
      PRIMARY KEY  (`id`),
      KEY `fk_teacher` (`teacher_id`),
      CONSTRAINT `fk_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 COMMENT='Cours enseignés à l''université';
     
    INSERT INTO `university`.`course` VALUES  (1,'DJ-INI','Initiation à java',4,1),
     (2,'DJ-ADV','Java, compléments',5,1),
     (3,'DJ-WEB','Java pour le Web',3,1),
     (4,'MM-UML','Analyse et conception avec UML',4,NULL),
     (5,'DJ-JSF','Framework JSF',4,NULL),
     (6,'DJ-STRUTS','Framework Struts',3,NULL);
     
    CREATE TABLE  `university`.`student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(30) NOT NULL,
      `forname` varchar(30) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED COMMENT='Etudiants inscrits à l''université';
     
    CREATE TABLE  `university`.`course_student` (
      `course_id` int(11) NOT NULL,
      `student_id` int(11) NOT NULL,
      KEY `fk_course` (`course_id`),
      KEY `fk_student` (`student_id`),
      CONSTRAINT `fk_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`id`),
      CONSTRAINT `fk_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Association entre des cours et des étudiants';
     
    CREATE TABLE  `university`.`teacher` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(30) NOT NULL,
      `forname` varchar(30) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED COMMENT='Professeurs enseignants à l''université';
     
    INSERT INTO `university`.`teacher` VALUES  (1,'Hassler','Alexis',28);
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. erreur sur la clef étrangère à la création de la table
    Par zyriuse dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/12/2007, 16h29
  2. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  3. Erreur sur serveur lié
    Par k-lendos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/03/2004, 15h21
  4. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo