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 :

Erreur Create table/foreign Key


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Erreur Create table/foreign Key
    Bonjour,

    Je suis actuellement en train de programmer un petit programme de gestion pour mon futur cybercafé en VB .NET et avec une base MySQL. Jusque là tout va bien.

    Mais je suis confronté à un problème bizarre, je désire lier ma table "Clients" aux tables "Abonnement"" et "reservations". Pour ce faire j'utilise évidemment la primary key de "Clients" (idClient, qui est un INT).

    Cela marche bien lorsque je lie une seule table mais lorsque j'essaye de lier la 2e j'obtiens cette erreur avec mysql workbench :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ERROR 1005: Can't create table 'myg.reservations' (errno: 121)
    SQL Statement:
    CREATE  TABLE `myg`.`reservations` (
      `idRes` INT NOT NULL ,
      `idClient` INT NULL ,
      `date` VARCHAR(45) NULL ,
      `payement` TINYINT(1)  NULL ,
      PRIMARY KEY (`idRes`) ,
      INDEX `idClient` (`idClient` ASC) ,
      CONSTRAINT `idClient`
        FOREIGN KEY (`idClient` )
        REFERENCES `myg`.`clients` (`idClient` )
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    Je ne sais pas du tout d’où vient cette erreur, car je fais exactement la même chose dans les 2 cas. A chaque fois, cela fonctionne pour la première table mais pas la deuxième. Ça fait un an que je n'ai plus fait de MySQL alors il se peut que j'aie oublié quelque chose mais j'ai cherché sur les forums je ne vois pas trop...

    J'ai déjà essayé toutes les solutions sur http://verysimple.com/2006/10/22/mys...frm-errno-150/ ...


    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 035
    Points
    34 035
    Billets dans le blog
    14
    Par défaut
    Question bête : la table clients est bien créée avant la table reservations ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Oui oui car j'arrive à les lier séparément, mais dès que je veux en lier une 2e à client, ça plante. Pour l'instant, j'ai lié clients à cartes_abo et pas à reservations :/

    Je ne pense donc pas que ça soit un problème d'incompatibilité des données (l'encodage est utf8 pour les 2)

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 035
    Points
    34 035
    Billets dans le blog
    14
    Par défaut
    On peut avoir le script de création de la table clients ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `clients` (
      `idClient` int(11) NOT NULL,
      `nom` varchar(45) DEFAULT NULL,
      `prenom` varchar(45) DEFAULT NULL,
      `dateN` varchar(45) DEFAULT NULL,
      `localite` varchar(45) DEFAULT NULL,
      `cP` int(11) DEFAULT NULL,
      `adresse` varchar(90) DEFAULT NULL,
      `telephone` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`idClient`),
      KEY `idClient` (`idClient`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 035
    Points
    34 035
    Billets dans le blog
    14
    Par défaut
    Les deux requêtes de création de table sont passées chez moi sans problème, en commençant bien sûr par la table clients.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    oui séparément ça marche, mais dès qu'on veut lier une 2e ça ne marche plus :

    Requête pour créer factures (ou abonnement; ça fait pareil)


    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
    CREATE TABLE `factures` (
      `idFacture` int(11) NOT NULL,
      `idClient` int(11) DEFAULT NULL,
      `date` varchar(45) DEFAULT NULL,
      `payement` tinyint(1) DEFAULT NULL,
      PRIMARY KEY (`idFacture`)
       INDEX `idClient` (`idClient` ASC) ,
       CONSTRAINT `idClient`
        FOREIGN KEY (`idClient` )
        REFERENCES `myg`.`clients` (`idClient` )
     
    ON DELETE NO ACTION
     
    ON UPDATE NO ACTION)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/04/2009, 13h52
  2. Erreur 1005 avec Foreign Key en InnoDB
    Par cd090580 dans le forum Outils
    Réponses: 5
    Dernier message: 14/07/2008, 13h41
  3. Message d'erreur 'violation of FOREIGN KEY constraint' de Interbase
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/06/2007, 09h11
  4. erreur create table
    Par slefevre01 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 10/02/2006, 16h43
  5. pb oracle création table - foreign key
    Par dédéf dans le forum Oracle
    Réponses: 3
    Dernier message: 29/11/2005, 11h21

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