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

Symfony PHP Discussion :

Contrainte cle etrangere


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut Contrainte cle etrangere
    Bonjour à tous,

    Voilà une partie de mon schéma :

    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
    table1:
      connection: doctrine
      tableName: table1
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        foreign_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
      relations:
        table2:
          local: foreign_id
          foreign: id
          type: one
    Ma table1 contient donc une clé étrangère pointant sur l'id de la table2.

    Dans phpMyAdmin j'arrive à créer une entrée avec la clé étrangère à null. (dans l'appli cela doit être possible) seulement dans mon admin (généré via admin generator...) si je laisse le champ de la clé étrangère "vide" j'ai une erreur du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "General error: 1452 Cannot add or update a child row: a foreign key constraint fails...."
    Je comprends l'erreur (la contrainte) mais comment forcer ma clé étrangère a null ?

    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Et est-ce que via phpmyadmin tu arrives à créer deux entrées avec la clé étrangère à null ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Citation Envoyé par Tirkyth Voir le message
    Et est-ce que via phpmyadmin tu arrives à créer deux entrées avec la clé étrangère à null ?
    merci pour ta réponse.

    Oui j'arrive à faire plusieurs entrée avec la clé à NULL

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu as moyen de voir la requête qui a été executée pour renvoyer cette erreur afin de voir qu'est ce qu'il a essayé de faire ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Citation Envoyé par Tirkyth Voir le message
    Tu as moyen de voir la requête qui a été executée pour renvoyer cette erreur afin de voir qu'est ce qu'il a essayé de faire ?
    Voici la requête que je vois dans les logs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table1(title, description, publish, date, created_at, updated_at, id, foreign_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?) - (test, test, 0, 2007-01-01 00:00:00, 1970-01-01 00:00:00, 1970-01-01 00:00:00, , )
    L'avant dernière value est vide mais en autoIncrement dans la bdd et la dernière value est celle qui me pose problème.

  6. #6
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut A essayer
    Je mettrais NULL dans ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO table1(title, description, publish, date, created_at, updated_at, id, foreign_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?) - (test, test, 0, 2007-01-01 00:00:00, 1970-01-01 00:00:00, 1970-01-01 00:00:00, ,NULL)
    pour être sûr que ça passe si c'est conçu pour pouvoir enregistrer même si la valeur est nulle.

    Par contre, pourquoi mettre id et mettre , , dans les valeurs si c'est une valeur en autoincrement. Autant mettre ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO table1(title, description, publish, date, created_at, updated_at, foreign_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?) - (test, test, 0, 2007-01-01 00:00:00, 1970-01-01 00:00:00, 1970-01-01 00:00:00, NULL)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui, sauf que ce n'est pas lui qui a écrit la requête. Elle est générée par un ORM

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Citation Envoyé par Tirkyth Voir le message
    Oui, sauf que ce n'est pas lui qui a écrit la requête. Elle est générée par un ORM
    En effet le problème ces que je ne "gère" pas vraiment la requête.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Lorque je change ma relation en many au lieu de one ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      relations:
        table2:
          local: foreign_id
          foreign: id
          type: many
    Mais bon dans mon cas cette relation sera toujours à 1. Quelqu'un à une explication ?

    Merci d'avance

Discussions similaires

  1. contrainte cle etrangere et Vue ?
    Par italiasky dans le forum Développement
    Réponses: 5
    Dernier message: 29/03/2010, 16h57
  2. Cle etrangere
    Par berg dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/01/2005, 00h48
  3. clées etrangeres
    Par kkhaled dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 19h45
  4. Plusieurs clés Etrangères ?
    Par maahta dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/10/2003, 20h22
  5. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24

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