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

Requêtes MySQL Discussion :

ERROR 1215 cannot add foreign key constraint


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut ERROR 1215 cannot add foreign key constraint
    Bonjour

    J'essaie de créer une table avec 2 clés étrangères mais je reçois ce message d'erreur:

    ERROR 1215 cannot add foreign key constraint
    Voici mes 2 tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE groupe
    (
     idGroupe int PRIMARY KEY AUTO_INCREMENT,
     nomGroupe varchar(30) NOT NULL
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE artiste
    (
     idArtiste int PRIMARY KEY AUTO_INCREMENT,
     nom varchar(30) NOT NULL,
     prenom varchar(30) NOT NULL,
     idGroupe int ,
     nomGroupe varchar(30),
    FOREIGN KEY (idGroupe)  REFERENCES groupe,
    FOREIGN KEY (nomGroupe)  REFERENCES groupe
    );
    J'arrive à créer la table "groupe" sans problème, c'est la création de la table "artiste" qui m'affiche le message d'erreur.

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 51
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE artiste
    (
     idArtiste int PRIMARY KEY AUTO_INCREMENT,
     nom varchar(30) NOT NULL,
     prenom varchar(30) NOT NULL,
     idGroupe INT NOT NULL,
     CONSTRAINT fk_idGroupe FOREIGN KEY (idGroupe)  REFERENCES groupe(idGroupe)
    );
    ?

    Par contre je vois pas l'intéret de faire une fk sur le nom du groupe.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Et si un artiste appartient à plusieurs groupes ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut momjunior.

    La contrainte que vous avez en utilisant les clefs étrangères est :
    --> créer en premier la table "groupe"
    --> créer ensuite la table "artiste"
    --> la clef étrangère de la table "artiste" doit exister au préalable dans la table "groupe".

    Voici un exemple :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `groupe`
    --------------
     
    --------------
    CREATE TABLE `groupe`
    (
      `idGroupe`   integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `nomGroupe`  varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `groupe` (`nomGroupe`) VALUES
      ('Groupe 1'),
      ('Groupe 2'),
      ('Groupe 3')
    --------------
     
    --------------
    select * from groupe
    --------------
     
    +----------+-----------+
    | idGroupe | nomGroupe |
    +----------+-----------+
    |        1 | Groupe 1  |
    |        2 | Groupe 2  |
    |        3 | Groupe 3  |
    +----------+-----------+
    --------------
    DROP TABLE IF EXISTS `artiste`
    --------------
     
    --------------
    CREATE TABLE `artiste`
    (
      `idArtiste`   integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `nom`         varchar(255)     NOT NULL,
      `prenom`      varchar(255)     NOT NULL,
      `idGroupe`    integer unsigned NOT NULL,
      CONSTRAINT `FK_GROUPE` FOREIGN KEY (`idGroupe`) REFERENCES `groupe` (`idGroupe`) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `artiste` (`nom`,`prenom`,`idGroupe`) values
      ('nom 1', 'prénom 1', 1),
      ('nom 2', 'prénom 2', 2),
      ('nom 3', 'prénom 3', 3)
    --------------
     
    --------------
    select * from artiste
    --------------
     
    +-----------+-------+----------+----------+
    | idArtiste | nom   | prenom   | idGroupe |
    +-----------+-------+----------+----------+
    |         1 | nom 1 | prénom 1 |        1 |
    |         2 | nom 2 | prénom 2 |        2 |
    |         3 | nom 3 | prénom 3 |        3 |
    +-----------+-------+----------+----------+
    --------------
    select nom, prenom, nomGroupe
    from       artiste as a
    inner join groupe  as g
    on g.idGroupe = a.idGroupe
    --------------
     
    +-------+----------+-----------+
    | nom   | prenom   | nomGroupe |
    +-------+----------+-----------+
    | nom 1 | prénom 1 | Groupe 1  |
    | nom 2 | prénom 2 | Groupe 2  |
    | nom 3 | prénom 3 | Groupe 3  |
    +-------+----------+-----------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Ok merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/08/2015, 17h46
  2. Réponses: 4
    Dernier message: 14/06/2015, 14h44
  3. Cannot add or update a child row: a foreign key constraint fails
    Par dubitoph dans le forum Administration
    Réponses: 4
    Dernier message: 25/01/2012, 08h29
  4. Réponses: 3
    Dernier message: 28/11/2011, 17h26
  5. Réponses: 0
    Dernier message: 12/12/2007, 21h10

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