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 :

#1005 - Can't create table (errno: 121)


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut #1005 - Can't create table (errno: 121)
    Bonjour à tous,

    Comme l'indique cet intitulé, après exécution de ma requête dans MySQL (ci-dessous) je me trouve face à l'erreur 121.
    J'utilise une base InnoDB sous MySQL 5.1.36 .
    MySQL est lui même intégrer dans Wamp (je ne sais pas si cette dernière précision est importante mais je vous le dit quand même ).

    En ce moment j'utilise MySQL Workbench, c'est lui qui ma généré le code ci-dessous.
    J'ai intégré plusieurs clés étrangères (c'est d'ailleurs pour cela que j'ai utilisé une base innoDB). Je me suis dis que c'était peut être un problème de typage, de syntaxe ou de versions mais après vérification çà ne l'est pas...

    C'est donc pour cela que je fait appel à vous, car après de nombreuses vérifications, je ne vois pas où peut se situer mon erreur...

    Voici le code (je vous le donne à partir de la première table que j'ai créé car elles sont toutes en relation) :

    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
     
    -- -----------------------------------------------------
    -- Table `CLASSES_PERSONNES`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS `CLASSES_PERSONNES` (
      `classe_id` INT NOT NULL AUTO_INCREMENT ,
      `nom` VARCHAR(30) NOT NULL ,
      PRIMARY KEY (`classe_id`) )
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `PERSONNES`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS  `PERSONNES` (
      `personne_id` INT NOT NULL AUTO_INCREMENT ,
      `nom` VARCHAR(45) NULL ,
      `prenom` VARCHAR(45) NULL ,
      `classe_id` INT NULL ,
      `identifiant` VARCHAR(45) NOT NULL ,
      `pass` VARCHAR(45) NOT NULL ,
      `statut` INT NULL ,
      `informations` TEXT NULL ,
      PRIMARY KEY (`personne_id`) ,
      INDEX `classe_id` (`classe_id` ASC) ,
      CONSTRAINT `classe_id`
        FOREIGN KEY (`classe_id` )
        REFERENCES  `CLASSES_PERSONNES` (`classe_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table  `MESSAGES_ACCUEIL`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS  `MESSAGES_ACCUEIL` (
      `message_id` INT NOT NULL AUTO_INCREMENT ,
      `contenu` TEXT NOT NULL ,
      `personne_id` INT NOT NULL ,
      `date` TIMESTAMP NOT NULL ,
      PRIMARY KEY (`message_id`) ,
      INDEX `personne_id` (`personne_id` ASC) ,
      CONSTRAINT `personne_id`
        FOREIGN KEY (`personne_id` )
        REFERENCES  `PERSONNES` (`personne_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table  `RUBRIQUES_PHOTOS`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS  `RUBRIQUES_PHOTOS` (
      `rubrique_photos_id` INT NOT NULL AUTO_INCREMENT ,
      `contenu` VARCHAR(45) NOT NULL ,
      PRIMARY KEY (`rubrique_photos_id`) )
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table  `PHOTOS`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS  `PHOTOS` (
      `photo_id` INT NOT NULL AUTO_INCREMENT ,
      `personne_id` INT NOT NULL ,
      `date` TIMESTAMP NOT NULL ,
      `rubrique_photos_id` INT NOT NULL ,
      `nom` VARCHAR(45) NOT NULL ,
      `archive` INT(1) NOT NULL DEFAULT 0 ,
      PRIMARY KEY (`photo_id`) ,
      INDEX `personne_id` (`personne_id` ASC) ,
      INDEX `rubrique_photos_id` (`rubrique_photos_id` ASC) ,
      CONSTRAINT `personne_id`
        FOREIGN KEY (`personne_id` )
        REFERENCES `PERSONNES` (`personne_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE,
      CONSTRAINT `rubrique_photos_id`
        FOREIGN KEY (`rubrique_photos_id` )
        REFERENCES `RUBRIQUES_PHOTOS` (`rubrique_photos_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE)
    ENGINE = InnoDB;
    L'erreur apparait donc lors de la création de la table PHOTO.

    Merci beaucoup à tous ceux qui ont pris un minimum d'attention à mon petit souci.

    Bonne journée à tous.

  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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Ton problème vient du fait que, dans le script de création de la table PHOTOS, tu nommes la première des 2 clefs étrangères personne_id, alors que ce nom est déjà attribué à une autre clef étrangère, dans la table MESSAGES_ACCUEIL.
    Il y a donc doublon sur les noms de clefs étrangères et erreur...

    Renomme cette seconde clef en personne_id2, par 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
    CREATE  TABLE IF NOT EXISTS  `PHOTOS` (
      `photo_id` INT NOT NULL AUTO_INCREMENT ,
      `personne_id` INT NOT NULL ,
      `date` TIMESTAMP NOT NULL ,
      `rubrique_photos_id` INT NOT NULL ,
      `nom` VARCHAR(45) NOT NULL ,
      `archive` INT(1) NOT NULL DEFAULT 0 ,
      PRIMARY KEY (`photo_id`) ,
      INDEX `personne_id` (`personne_id` ASC) ,
      INDEX `rubrique_photos_id` (`rubrique_photos_id` ASC) ,
      CONSTRAINT `personne_id2` #CLEF RENOMMEE
        FOREIGN KEY (`personne_id` )
        REFERENCES `PERSONNES` (`personne_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE,
      CONSTRAINT `rubrique_photos_id`
        FOREIGN KEY (`rubrique_photos_id` )
        REFERENCES `RUBRIQUES_PHOTOS` (`rubrique_photos_id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE)
    ENGINE = InnoDB
    Il faut reconnaître qu'en ce qui concerne les erreurs sur les clefs étrangères, les messages de MySQL sont très peu explicites (et c'est rien de le dire !).

    ced
    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

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    Waou !

    J'avoue que je n'aurais jamais trouvé ! Merci beaucoup .
    Est-il possible de ne pas donner de noms aux contraintes ?
    Cela pourrait faciliter la tâche.

    Encore merci !

  4. #4
    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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Le nom des contraintes est optionnel. Donc, on peut ne pas le préciser .

    ced
    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

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 142
    Par défaut

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

Discussions similaires

  1. [MySQL] Erreur "#1005 - Can't create table (errno: 150)"
    Par R3MIX dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2012, 23h48
  2. #1005 - Can't create table (errno: 150)
    Par teophane dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/12/2011, 09h53
  3. #1005 - Can't create table 'test.items' (errno: 150)
    Par billyrose dans le forum Débuter
    Réponses: 2
    Dernier message: 04/06/2009, 11h05
  4. debutant:can't create table errno 121
    Par colocolo dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/04/2009, 18h10
  5. Réponses: 1
    Dernier message: 28/08/2008, 09h33

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