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

SQL Procédural MySQL Discussion :

Clé etrangere erreur 150 mais je vois pas l'erreur


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Points : 67
    Points
    67
    Par défaut Clé etrangere erreur 150 mais je vois pas l'erreur
    bonjour,
    j'ai une une erreur 150 sur la création d'une table, d'apres la FAQ mysql ça buggue au niveau des clés etrangeres de ma 3eme table mais je vois pas mon erreur, donc un petit coup d'oeuil externe serait le bien venu


    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
    DROP TABLE IF EXISTS `doc_qualite`;
    CREATE TABLE `doc_qualite` (
    `Ndq` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
    `Nchro` INT( 10 ) UNSIGNED NOT NULL ,
    `nom` VARCHAR( 50 ) NOT NULL ,
    `indice` INT( 3 ) DEFAULT '1' NOT NULL ,
    `type` ENUM( 'T' ) NOT NULL ,
    `date` DATE DEFAULT '''1000-01-01''' NOT NULL ,
    `provenance` ENUM( 'Airbus' ) NOT NULL ,
    PRIMARY KEY ( `Ndq` )
    ) TYPE = InnoDB DEFAULT CHARSET=utf8;
     
     
     
    DROP TABLE IF EXISTS `service`;
    CREATE TABLE `service` (
    `Nserv` INT( 10 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT ,
    `nom` VARCHAR( 50 ) NOT NULL ,
    PRIMARY KEY ( `Nserv` )
    ) TYPE = InnoDB DEFAULT CHARSET=utf8;
     
     
     
    DROP TABLE IF EXISTS `Dq_serv`;
    CREATE TABLE `Dq_serv` (
    `Ndq` INT( 10 ) NOT NULL ,
    `Nserv` INT( 10 ) NOT NULL ,
    `criticite` ENUM( '1', '2', '3' ) DEFAULT '1' NOT NULL ,
    `action` TEXT NOT NULL ,
    PRIMARY KEY ( `Ndq` , `Nserv` ),
    INDEX `indx_Ndq_dq_serv` (`Ndq`) ,
    FOREIGN KEY `fk_Ndq_doc_qualite_dq_serv` (`Ndq`) REFERENCES `doc_qualite` (`Ndq`) ON DELETE CASCADE,
    INDEX `indx_Nserv_dq_serv` (`Nserv`) ,
    FOREIGN KEY `fk_Nserv_serv_dq_serv` (`Nserv`) REFERENCES `service` (`Nserv`) ON DELETE CASCADE
     
    ) TYPE = InnoDB DEFAULT CHARSET=utf8;

    merci

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 910
    Points : 6 032
    Points
    6 032
    Par défaut
    SHOW INNODB STATUS now prints detailed information of the latest detected FOREIGN KEY and UNIQUE KEY errors. If you do not understand why InnoDB gives the error 150 from a CREATE TABLE, you can use this statement to study the reason.
    Peux-tu essayer cette commande et poster le résultat ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 910
    Points : 6 032
    Points
    6 032
    Par défaut
    il y a aussi tous ces points à vérifier et prendre en compte :

    Les deux tables doivent être de type InnoDB, dans la table, il doit y avoir un INDEX où les clés étrangères sont listées comme première colonne, dans le même ordre, et dans la table référencée, il doit y avoir un INDEX où les colonnes référencées sont listées comme premières colonnes, dans le même ordre. Les préfixes d'index ne sont pas supportés pour les clés de contrainte.

    InnoDB ne crée pas automatiquement les index nécessaires pour les clés étrangères : vous devez ls créer vous-même. Les index sont nécessaires pour accélérer les vérifications de contrainte, et éviter un scan de table.

    Les colonnes correspondantes de la contrainte dans la table et la table de référence doivent avoir le même type, pour éviter les conversions lors des comparaisons. La taille et la présente du signe pour les entiers doit être les mêmes.
    En rouge les éléments à respecter...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Points : 67
    Points
    67
    Par défaut
    je vous remercie tous les deux, j'avais oublié de préciser que je travaillait avec des entiers non signés dans la table ou il y a mes clé etrangères, j'ai pu le voir grace au INNODB STATUS



    merci [/list][/code]

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

Discussions similaires

  1. [ImageMagick] Utilisation de getimagesize : je ne vois pas l'erreur
    Par JavaAcro dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 22/06/2006, 21h42
  2. Réponses: 2
    Dernier message: 09/06/2006, 14h38
  3. Je ne vois pas l'erreur:( qlq pourra m'aider !
    Par moonia dans le forum Langage
    Réponses: 23
    Dernier message: 18/05/2006, 14h55
  4. Je ne vois pas l'erreur...
    Par nunurs83 dans le forum C
    Réponses: 21
    Dernier message: 16/05/2006, 21h47
  5. Beuggouillage...je vois pas l'erreur
    Par Force_Rouge dans le forum C
    Réponses: 3
    Dernier message: 29/03/2006, 11h12

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