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 :

[MySQL 5.1.37] Erreur lorsque je tente de créer une clef étrangère


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [MySQL 5.1.37] Erreur lorsque je tente de créer une clef étrangère
    Bonjour,

    Je rencontre actuellement un soucis lors de l'ajout d'une clef étrangère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE `choix_question`
     ADD CONSTRAINT `choix_question_question` FOREIGN KEY (`id_Question_Choix_Question`) REFERENCES `Question` (`id_Question`);
    J'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1005 - Ne peut créer la table 'questionnaire.#sql-f84_48' (Errcode: 150) (<a href="server_engines.php?engine=InnoDB&amp;page=Status&amp;token=1c5626532e2e56182672e099e3619247">Détails...</a>)

    Table 'question' qui est la table parent sur laquelle pointe la clef etrangère.

    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
    -- phpMyAdmin SQL Dump
    -- version 3.2.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 28 Août 2009 à 15:48
    -- Version du serveur: 5.1.37
    -- Version de PHP: 5.3.0
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `questionnaire`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `question`
    --
     
    CREATE TABLE IF NOT EXISTS `question` (
      `id_Question` int(11) NOT NULL AUTO_INCREMENT,
      `id_Questionnaire_Question` int(11) NOT NULL,
      `numero_Question` int(11) NOT NULL,
      `intitule_Question` varchar(50) NOT NULL,
      PRIMARY KEY (`id_Question`),
      KEY `id_Questionnaire_Question` (`id_Questionnaire_Question`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `question`
    --
     
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `question`
    --
    ALTER TABLE `question`
      ADD CONSTRAINT `question_ibfk_1` FOREIGN KEY (`id_Questionnaire_Question`) REFERENCES `questionnaire` (`id_Questionnaire`);
    La table choix_question dans laquelle je souhaite ajouter la clef étrangère :

    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
    -- phpMyAdmin SQL Dump
    -- version 3.2.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 28 Août 2009 à 15:54
    -- Version du serveur: 5.1.37
    -- Version de PHP: 5.3.0
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `questionnaire`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `choix_question`
    --
     
    CREATE TABLE IF NOT EXISTS `choix_question` (
      `id_Choix_Question` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `id_Question_Choix_Question` int(10) unsigned NOT NULL,
      `intitule_Choix_Question` varchar(45) NOT NULL,
      `type_Choix_Question` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id_Choix_Question`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `choix_question`
    --
    Si qqn voit où j'ai fait une erreur lors de la création de ma clef étrangère .

    ++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Petite information complémentaire, j'ai réussit a créer 2 autres clefs étrangères sans soucis sur 2 autres tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE Questionnaire
    ADD FOREIGN KEY (id_Utilisateur_Createur) REFERENCES Utilisateur (id_Utilisateur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE Question
    ADD FOREIGN KEY (id_Questionnaire_Question) REFERENCES Questionnaire (id_Questionnaire)
    Je ne comprends pas d'où vient ma précédente erreur.

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Je viens de repéré un élément dans mes tables.

    Je ne sais pas encore pourquoi mais lors de la création, pour la table question j'ai des int(11) et pour la table choix_question il m'a mis des int(10), certainement une fausse manipulation de ma part.

    Cependant j'ai encore la même erreur.

    ...

  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 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,

    Peux-tu nous donner le script de création des 2 tables ?
    Le problème vient souvent d'une incompatibilité entre les types des colonnes dans les 2 tables.

    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 averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Il me semblait avoir mis la création des deux tables dans le premier.

    Quoiqu'il en soit j'ai résolu mon problème à la méthode bourrin, en supprimant et en recréant la table.

    je met en resolu

    ++

  6. #6
    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
    Oooops .
    Au temps pour moi, c'est exact, les 2 codes y étaient...

    Le problème vient de la différence du nombre d'affichage entre parenthèses sur chacune des 2 colonnes. Un coup c'est INT(10) et l'autre c'est INT(11).
    Il faut mettre la même valeur des 2 côtés.

    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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    J'avais aussi remarqué cette différence (cf mon post plus haut ).

    D'ailleur je ne sais pas pourquoi il avait mis ce int(10).

    Enfin quoi qu'il en soit le passage de int(10) en int(11) n'avait pas réglé le soucis.

    J'avais du faire une boulette lors de la création de la table. En supprimant la table et en la recréant plus de soucis tout est rentré dans l'ordre

    encore merci pour les réponses

    ++

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

Discussions similaires

  1. Erreur lorsque je tente d'accéder à mon site
    Par Fra212 dans le forum ASP.NET MVC
    Réponses: 17
    Dernier message: 30/03/2012, 16h07
  2. Erreur lorsque j'attache un fichier à une note
    Par hunter_X dans le forum Microsoft Dynamics CRM
    Réponses: 0
    Dernier message: 13/11/2010, 17h03
  3. Erreur lorsque je tente un WriteObject
    Par M.a.n.u. dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/04/2008, 18h31
  4. [mySQL 5] Eviter l'erreur lorsqu'un champ est inexistant
    Par fanfouer dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/03/2008, 10h10
  5. [Oracle] créer une clé étrangère en mysql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/05/2007, 14h50

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