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 :

alter table (erreur 150)


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut alter table (erreur 150)
    salut j'ai rélisé une base de données ne comportant que 4 tables

    voila le code
    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
    /*==============================================================*/
    /* Nom de SGBD :  MySQL 4.0                                     */
    /* Date de création :  21/05/2006 00:34:28                      */
    /*==============================================================*/
     
     
    /*==============================================================*/
    /* Table : ARCHIVAGE_DEVIS                                      */
    /*==============================================================*/
    create table ARCHIVAGE_DEVIS
    (
       ID_DEVIS                       int                            not null,
       DEVIS_SAVED                    text,
       primary key (ID_DEVIS)
    )
    type = InnoDB;
     
    /*==============================================================*/
    /* Table : ARCHIVAGE_FACTURE                                    */
    /*==============================================================*/
    create table ARCHIVAGE_FACTURE
    (
       ID_FACTURE                     char(10)                       not null,
       FACTURE_SAVED                  text,
       primary key (ID_FACTURE)
    )
    type = InnoDB;
     
    /*==============================================================*/
    /* Table : ARCHIVAGE_LG_DEVIS                                   */
    /*==============================================================*/
    create table ARCHIVAGE_LG_DEVIS
    (
       NUM_ARTICLE                    int                            not null,
       ID_DEVIS                       int                            not null,
       LG_DEVIS_SAVED                 text,
       primary key (NUM_ARTICLE)
    )
    type = InnoDB;
     
    /*==============================================================*/
    /* Index : RELATION_2_FK                                        */
    /*==============================================================*/
    create index RELATION_2_FK on ARCHIVAGE_LG_DEVIS
    (
       ID_DEVIS
    );
     
    /*==============================================================*/
    /* Table : ARCHIVAGE_LG_FACTURE                                 */
    /*==============================================================*/
    create table ARCHIVAGE_LG_FACTURE
    (
       NUM_ARTICLE_FAC                int                            not null,
       ID_FACTURE                     int                            not null,
       LG_FACTURE_SAVED               text,
       primary key (NUM_ARTICLE_FAC)
    )
    type = InnoDB;
     
    /*==============================================================*/
    /* Index : RELATION_1_FK                                        */
    /*==============================================================*/
    create index RELATION_1_FK on ARCHIVAGE_LG_FACTURE
    (
       ID_FACTURE
    );
     
    alter table ARCHIVAGE_LG_DEVIS add constraint FK_RELATION_2 foreign key (ID_DEVIS)
          references ARCHIVAGE_DEVIS (ID_DEVIS) on delete restrict on update restrict;
     
    alter table ARCHIVAGE_LG_FACTURE add constraint FK_RELATION_1 foreign key (ID_FACTURE)
          references ARCHIVAGE_FACTURE (ID_FACTURE) on delete restrict on update restrict;
    le prob c'est que, lors de d'execution du fichier .sql dans PHPMyAdmin, une erreur apparait pour la derniere "alter table"

    ____________________________________________________________________________
    Erreur

    requête SQL:
    ALTER TABLE ARCHIVAGE_LG_FACTURE ADD CONSTRAINT FK_RELATION_1 FOREIGN KEY ( ID_FACTURE ) REFERENCES ARCHIVAGE_FACTURE( ID_FACTURE ) ON DELETE RESTRICT ON UPDATE RESTRICT ;


    MySQL a répondu:
    #1005 - Can't create table '.\hexa_facture\#sql-ac0_f3.frm' (errno: 150)

    _____________________________________________________________________________



  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Donc, si j'ai bien compris, tu veux qu'un int référence un char(10), c'est ça ?

  3. #3
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Oui l'erreur est de le type de ID_FACTURE dans la table ARCHIVAGE_FACTURE.
    Vivement qu'un message d'erreur plus clair s'affiche quand on essaie de lier deux champs de type différents...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /*==============================================================*/
    /* Table : ARCHIVAGE_FACTURE                                    */
    /*==============================================================*/
    create table ARCHIVAGE_FACTURE
    (
       ID_FACTURE                     char(10)                not null,
       FACTURE_SAVED                  text,
       primary key (ID_FACTURE)
    )
    type = InnoDB;
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Membre confirmé Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    Oups désolé, j'ai pas fais attention à l'id_facture
    c bon , c'est reglé

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

Discussions similaires

  1. Erreur de syntaxe dans l'instruction ALTER TABLE
    Par cakeke dans le forum Access
    Réponses: 1
    Dernier message: 25/12/2006, 15h30
  2. alter table on delete cascade, erreur syntaxe
    Par sam01 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 25/11/2006, 22h06
  3. Erreur 1555 après un alter table/move tablespace
    Par Daily dans le forum Oracle
    Réponses: 4
    Dernier message: 11/10/2006, 11h39
  4. Erreur #1064 - Problème ALTER TABLE
    Par 12_darte_12 dans le forum Requêtes
    Réponses: 6
    Dernier message: 08/03/2006, 15h25
  5. Erreur ORA00054 lors d'un alter table
    Par claralavraie dans le forum Oracle
    Réponses: 3
    Dernier message: 13/01/2006, 17h02

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