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 :

Erreur durant le "load-data" [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Erreur durant le "load-data"
    Bonjour,

    J'ai une table1 en liaison avec ma table2. Niveau fonctionnalité tout est ok...

    J'ai fait un data-dump et il m'a bien généré mon yml avec mes datas

    Mais lorsque je fait un data-load j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Couldn't call Doctrine_Core::set(), second argument should be an instance of Doctrine_Collection when setting one-to-m ny references.
    Ce qui provoque cette erreur c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      maData:
        monChamp: maTable2_1
    monChamp est une clé étrangère avec la valeur 1.

    Quelqu'un aurait une idée du problème ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Pourrais-tu mettre le shema.yml et le fixture.yml en entier, cela rendrait l'analyse plus simple.

  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 mimi68 Voir le message
    Pourrais-tu mettre le shema.yml et le fixture.yml en entier, cela rendrait l'analyse plus simple.
    Data.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Table1:
      Table1_1:
        title: 'xxxx'
        description: 'xxxx' ......
     
    Table2:
      Table2_10:
        Table1: Table1_1
        title: 'yyyyy'
        description: "yyyyy".....
    et le schema.yml
    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
    74
    75
     
    table1:
      connection: doctrine
      tableName: table1
      actAs:
        Sluggable:
          unique:       true
          fields:       [title]
          canUpdate:    true
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        id_table2:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        title:
          type: string(200)
          fixed: false
          unsigned: false
          primary: false
          default: ''
          notnull: true
          autoincrement: false
        description:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          default: ''
          notnull: true
          autoincrement: false
      relations:
        table2:
          local: id_table2
          foreign: id
          type: many
     
    table2:
      connection: doctrine
      tableName: table2
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        title:
          type: string(200)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        description:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          default: ''
          notnull: true
          autoincrement: false
      relations:
        table1:
          local: id
          foreign: id_table2
          type: many
    Est la relation many-many qui pose problème car je n'ai pas de table intermédiaire ?

    Merci

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le schema "corrigé" non pas que ce que tu ais mis soit fondamentalement faux, mais il ne sert à rien de mettre les options par défauts. De plus, sans clef primaire définie doctrine en crée une auto-incrémenté sur integer 4.

    Dernière chose, les liaisons ne doivent être déclaré que sur un seul côté de la table, les mot clef foreign.... correspondent à l'autre côté de la relation. Si tu définis ta relation sur les deux tables, tu vas vite mourir !!!

    Par convention, le nom de la clef distante commande par le nom de la table et fini par _id.

    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
     
    table1:
      actAs:
        Sluggable:
          unique:       true
          fields:       [title]
          canUpdate:    true
      columns:
        table2_id:
          type: integer(4)
        title:
          type: string(200)
          default: ''
          notnull: true
        description:
          type: string()
          default: ''
          notnull: true
      relations:
        table2:
          local: table2_id
          foreign: id
          foreignAlias: table1s
     
    table2:
      columns:
        title:
          type: string(200)
        description:
          type: string(255)
          default: ''
          notnull: true
    Par convention, les noms de tables se terminent sans "s" si "s" final il y a c'est que l'objet va retourner une collection d'enregistrement.

    Ici, la relation que tu as mis en place est une relation 1-n et non pas n-n. Note que le many n'est pas précisé, c'est l'option par défaut.

    Le fixture est faux vu qu'il considère qu'il peut y avoir plusieurs enregistrement de table1 dans table2 alors que le schema donné indique le contraire.

  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 mimi68 Voir le message
    Le schema "corrigé" non pas que ce que tu ais mis soit fondamentalement faux, mais il ne sert à rien de mettre les options par défauts. De plus, sans clef primaire définie doctrine en crée une auto-incrémenté sur integer 4.

    Dernière chose, les liaisons ne doivent être déclaré que sur un seul côté de la table, les mot clef foreign.... correspondent à l'autre côté de la relation. Si tu définis ta relation sur les deux tables, tu vas vite mourir !!!

    Par convention, le nom de la clef distante commande par le nom de la table et fini par _id.

    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
     
    table1:
      actAs:
        Sluggable:
          unique:       true
          fields:       [title]
          canUpdate:    true
      columns:
        table2_id:
          type: integer(4)
        title:
          type: string(200)
          default: ''
          notnull: true
        description:
          type: string()
          default: ''
          notnull: true
      relations:
        table2:
          local: table2_id
          foreign: id
          foreignAlias: table1s
     
    table2:
      columns:
        title:
          type: string(200)
        description:
          type: string(255)
          default: ''
          notnull: true
    Par convention, les noms de tables se terminent sans "s" si "s" final il y a c'est que l'objet va retourner une collection d'enregistrement.

    Ici, la relation que tu as mis en place est une relation 1-n et non pas n-n. Note que le many n'est pas précisé, c'est l'option par défaut.

    Le fixture est faux vu qu'il considère qu'il peut y avoir plusieurs enregistrement de table1 dans table2 alors que le schema donné indique le contraire.
    Merci mimi pour ta réponse.

    Il me reste plus qu'a tout refaire mon schema.yml pour repartir sur de bonne base.

  6. #6
    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
    Avec l'exemple lorsque je fait un build --all.... j'ai une erreur du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    failing query ALTER TABLE table1 ADD CONSTRAINT table2_id FOREIGN KEY ...

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

Discussions similaires

  1. LOAD DATA INFILE et quotes
    Par bart0356 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/03/2014, 11h44
  2. Erreur PLS-00103 avec LOAD DATA INFILE
    Par Reivilo35 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 22/03/2012, 15h59

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