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 :

schema.yml ne fonctionne pas [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut schema.yml ne fonctionne pas
    hello

    J'ai toujours un message d'erreur, disant qu'il arrive pas à parser mon yml, quand je tente de génrer mes requêtes SQL en ligne de commande...

    Je pense que c'est un problème de format, peut-être que les espaces sous eclipse ça fout le truc en l'air... j'ai essayé avec geany qui reconnait le format yml mais ça plante aussi.

    Je précise que j'essaie avec un copier collé d'un tutorial, qui est sensé fonctionner...

    Any idea, un logiciel qui lirait ça bien sous ubuntu ou alors pensez vous qu'il y ait une autre cause?

    EDIT: j'ai refait mon schema.yml à moi, et même en écrivant mon fichier en NANO dans la console linux, ça passe pas, ça bloque à la première ligne

    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
     
     Member
        tableName: members
        actAs:
          timestampable: ~
        columns:
          username: string(15)
          genre:
            type: enum
            values: ['male', 'female']
          categorie:
            type: enum
            values: ['test', 'test2', 'test3']
          email: string(25)
          region: string(25)
          departement: string(25)
          isActivated: integer(1)
          password: string(60)
     
      Region
        tableName: regions
        actAs:
          timestampable: ~
        columns:
          region: string(50)
     
      Message
        tableName: messages
        actAs:
          timestampable: ~
        columns:
          senderId: integer
          receiverId: integer
          content: text
          isRead: integer(1)
     
      Departement
        tableName: departements
        actAs:
          timestampable: ~
        columns:
          departement: string(50)
     
      Commentaire
        tableName: commentaires
        actAs:
          timestampable: ~
        columns:
          senderId: integer
          receiverId: integer
          content: text
          isGood:
            type: enum
            values: ['truc', 'machin', 'test']
        relations:
          Member:
            type: one
            foreignType: many
            local: receiverId
            onDelete: CASCADE

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Je ne comprend pas trop le le problème. Tu dis : "il arrive pas à parser mon yml, quand je tente de génrer mes requêtes SQL en ligne de commande..."
    Ce que je traduit par "lorsque je tente de créer la base de donnée".

    A partir de là, il faut comprendre le problème de parse.

    Tu dois avoir uniquement des espaces sur la gauche. Je te conseille de faire une indentation constante de deux espace. Le nom des tables doit être à la position zéro (pas d'espace avant).

    Dans ton schema, tu as des "bizarreries" une table region avec un champ region ??? Rien qui puisse empêcher le parse du fichier, mais tu devrais repenser ton analyse.

    Ton schema revu à ma façon :
    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
    #shema.yml (non testé)
    Member
      tableName: members
      actAs:
        timestampable: ~
      columns:
        username: string(15)
        genre:
          type: enum
          values: ['male', 'female']
        categorie:
          type: enum
          values: ['test', 'test2', 'test3']
        email: string(25)
        region: string(25)
        departement: string(25)
        isActivated: integer(1)
        password: string(60)
     
    Region
      tableName: regions
      actAs:
        timestampable: ~
        columns:
          nom: string(50)
     
    Message
      tableName: messages
      actAs:
        timestampable: ~
      columns:
        sender_id: integer
        receiver_id: integer
        content: text
        isRead: integer(1)
     
    Departement
      tableName: departements
      actAs:
        timestampable: ~
      columns:
        nom: string(50)
     
    Commentaire
      tableName: commentaires
      actAs:
        timestampable: ~
      columns:
        sender_id: integer
        receiver_id: integer
        content: text
        isGood:
          type: enum
          values: ['truc', 'machin', 'test']
        relations:
          Member:
            local: receiver_id
            foreignAlias: Commentaires
    Accessoirement, il faut éviter les champs enum. Si c'est viable pour un champ "genre" (mais à éviter) c'est déconseillé pour le moins pour un champ "categorie" qui est susceptible d'évoluer dans le temps.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    Merci bien pour ton aide.

    En fait il manquait les deux points ":" devant les noms de table. Mais même après correction de ça ça plantait, je pense qu'il fallait aussi comme tu l'as fait enlever les espaces avant les noms de table.

    C'est vrai que Region region ça faisait redondant, du coup là il me parse mon fichier jusqu'à la ligne 56, un problème avec la relation, là c'est pas un problème de syntaxe mais de logique je vais essayer de trouver ça, j'ai tellement peu l'habitude de toucher aux bases de données que j'ai du faire une bêtise.

    Merci en tout cas

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Deux point après (!) le nom de table.

    Et j'ai retapé le fichier sans le voir

    Bon, vu l'heure, je m’absous.

    En principe la relation tel que je l'ai écrite devrait être viable. Par contre, je dirais qu'il manque de nombreuses liaisons dans ton shema.yml

    Attention, un bon schema.yml fait une application simple à développer. C'est une étape essentiel qu'il ne faut surtout pas négliger.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Deux point après (!) le nom de table.

    Et j'ai retapé le fichier sans le voir

    Bon, vu l'heure, je m’absous.

    En principe la relation tel que je l'ai écrite devrait être viable. Par contre, je dirais qu'il manque de nombreuses liaisons dans ton shema.yml

    Attention, un bon schema.yml fait une application simple à développer. C'est une étape essentiel qu'il ne faut surtout pas négliger.
    Ben écoute pareil pour moi, je galérais depuis hier soir, je crois que je les avais bien mis au début, et en les retapant dans nano je les ai zappé

    Par contre j'ai un autre problème, j'ai ce message d'erreur en lançant la commande de creation des tables:

    Fatal error: Call to a member function evictAll() on a non-object in /var/www/myProject/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1239

    Pourtant là j'ai simplifié mon schema.yml au maximum juste pour le test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Member:
      tableName: members
      columns:
        username: string(15)
        email: string(25)
        region: string(25)
        departement: string(25)
        password: string(60)
    Les espaces sont bien respectés sur mon fichier, en fait je suis en mode "faire fonctionner symfony" plus qu'en mode projet là, mais quand je lancerai un projet tes conseils me seront bien utiles, merci pour ça

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    Il semblerait que ça bloque à ce niveau là, dans le fichier de doctrine Connection.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /**
         * clear
         * clears all repositories
         *
         * @return void
         */
        public function clear()
        {
            foreach ($this->tables as $k => $table) {
                $table->getRepository()->evictAll();
                $table->clear();
            }
        }
    Il semblerait que quelqu'un a eu le même problème, mais on a plus eu de nouvelles:

    http://www.developpez.net/forums/d10...tion-evictall/

  7. #7
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Pour le coup, le problème est plus classique.

    En général, il arrive lorsque l'on a apporté de grosses modifications sur un shema.yml notamment des suppressions d'entité (de table), ce qui est le cas ici, mais sans avoir épurer le modèle.

    Dans les commandes en ligne, tu as une commande qui permet de nettoyer le modèle des classes devenues inutiles, pas de symfony1 sous la mains ce week-end, mais une recherche rapide sur la commande symfony devrait te permettre de trouver.

    Nettoies ton modèle et régénère les tables, cela devrait marcher.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Pour le coup, le problème est plus classique.

    En général, il arrive lorsque l'on a apporté de grosses modifications sur un shema.yml notamment des suppressions d'entité (de table), ce qui est le cas ici, mais sans avoir épurer le modèle.

    Dans les commandes en ligne, tu as une commande qui permet de nettoyer le modèle des classes devenues inutiles, pas de symfony1 sous la mains ce week-end, mais une recherche rapide sur la commande symfony devrait te permettre de trouver.

    Nettoies ton modèle et régénère les tables, cela devrait marcher.
    Merci de ton aide, bon tout fonctionne maintenant, j'aime beaucoup le système de doctrine (c'est mon premier ORM )

  9. #9
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Alors, pour ta prochaine application, je te conseil doctrine2 avec symfony2...

    Une autre grosse découverte à venir !
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

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

Discussions similaires

  1. Exportation avec Schema.ini ne fonctionne pas correctement
    Par Elendawyn dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/03/2015, 16h46
  2. [1.x] Fichier routing.yml qui ne fonctionne pas ?
    Par karlito40 dans le forum Symfony
    Réponses: 3
    Dernier message: 29/08/2010, 21h24
  3. Réponses: 3
    Dernier message: 02/12/2008, 15h22
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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