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 avec une clé étrangère


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut Erreur avec une clé étrangère
    Bonjour,

    Dans ma base, j'ai les tables définies par

    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
    CREATE TABLE IF NOT EXISTS `user` (
      `user_id` int(11) NOT NULL auto_increment,
      `created_at` datetime NOT NULL,
      `updated_at` datetime NOT NULL,
      `username` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `first_name` varchar(255) default NULL,
      `last_name` varchar(255) default NULL,
      `email` varchar(255) NOT NULL,
      `is_active` tinyint(1) NOT NULL,
      `is_admin` tinyint(1) NOT NULL,
      PRIMARY KEY  (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    CREATE TABLE IF NOT EXISTS `article` (
      `article_id` int(11) NOT NULL auto_increment,
      `category_id` int(11) NOT NULL,
      `user_id` int(11) NOT NULL,
      `title` varchar(255) collate utf8_unicode_ci NOT NULL,
      `created_at` datetime NOT NULL,
      `updated_at` datetime NOT NULL,
      `is_published` tinyint(1) NOT NULL,
      `publication_date` datetime NOT NULL,
      `expiration_date` datetime NULL,
      `text` text collate utf8_unicode_ci NOT NULL,
      `format` tinyint(1) NOT NULL,
      PRIMARY KEY  (`article_id`),
      KEY `category_id` (`category_id`),
      KEY `user_id` (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
     
     
    CREATE TABLE IF NOT EXISTS `article_category` (
      `category_id` int(11) NOT NULL auto_increment,
      `name` varchar(255) collate utf8_unicode_ci NOT NULL,
      `v_order` tinyint(4) NOT NULL,
      `description` varchar(255) collate utf8_unicode_ci default NULL,
      PRIMARY KEY  (`category_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
     
     
    ALTER TABLE `article`
      ADD CONSTRAINT `article_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `article_category` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `article_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `article` (`user_id`);
    Une requête d'insertion dans la table article me donne toujours une erreur de clé étrangère sur user_id, alors que la valeur correspondante existe bien dans la table user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1452 - Cannot add or update a child row: a foreign key constraint fails (`mabase/article`, CONSTRAINT `article_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `article` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE)
    Pouvez-vous m'aider ?

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    peut-tu nous montrer ta requête d'insert ?

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par kazou Voir le message
    Bonjour,

    peut-tu nous montrer ta requête d'insert ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into article (category_id, user_id, created_at, updated_at, is_published, publication_date) values (1, 1, '2008-06-02','2008-06-02','1','2008-06-02')

  4. #4
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Possède-il déjà une occurrence d'identifiant 1 dans client ET catégorie ?

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par kazou Voir le message
    Possède-il déjà une occurrence d'identifiant 1 dans client ET catégorie ?
    Oui.

  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 065
    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 065
    Par défaut
    Bonjour,

    Curieux effectivement que ce soit cette erreur-là qui ressorte . Toutefois, la définition de la table article pose déjà un problème : TITLE est NOT NULL, mais n'a pas de valeur par défaut. Rien que ça, ça fait échouer l'insertion...
    Ensuite, les champs TEXT et FORMAT sont également NOT NULL, mais ne font pas partie de l'insertion, ce qui la fait également échouer...

    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

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

Discussions similaires

  1. Problème pour charger un set avec une clé étrangère
    Par sylvainv18 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/11/2006, 18h08
  2. erreur avec une zone de liste deroulante
    Par MCarole dans le forum Access
    Réponses: 9
    Dernier message: 18/07/2006, 11h45
  3. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  4. [VBA-E]Erreur avec une combobox qui liste le contenu de cell
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2006, 12h01
  5. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45

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