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 :

Fixtures : purging database ne fonctionne pas.


Sujet :

Symfony PHP

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut Fixtures : purging database ne fonctionne pas.
    Bonjour.

    J'ai 5 fichiers de fixtures qui sont utilisé sur mon projet.

    Ils ont tous un ordre pour que les données de base(thème, localisation, etc...) soient chargés avec les données utiles(post).

    Ca fonctionne très bien la première fois que j'execute les fixytures, mais la fois suivante, j'obtient cette erreur :

    > purging database
    [PDOException]

    SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`symfony`.`localisation`, CONSTRAINT `FK_BFD3CE8F727ACA70` FOREIGN KEY (`parent_id`) REFERENCES `localisation` (`id`))

    doctrine:fixtures:load [--fixtures[="..."]] [--append] [--em="..."] [--purge-with-truncate]
    Il semble que symfony n'arrive pas a comprendre qu'il doit commencer par supprimer les données en partant dans l'ordre decroissant. Il essaye donc de supprimer ma localisation avant mon post, ce qui fait bien sur hurler mysql.

    Est ce que vous avez trouvé une façon de résoudre le probvleme ?

    Sur le net, a par conseiller de faire un drop sur la base de donnée, y a pas grand chose... Il y avait un problème avec truncate, mais il me semble que ca a été corrrigé il y a plus d'un an.

    Qu'en pensez-vous ?

    Merci,
    Pierre

    Merci,
    Pierre

  2. #2
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Bonjour,

    Est ce que quelqu'un a l'habitude de travailler avec les fixtures et a eu le même soucis de suppressions de données qui se fait dans le mauvais sens ? Est-il possible de régler l'ordre d'une quelconque manière ?

    Merci,
    Pierre

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Bonjour,

    il semble que cela soit du a ma relation en autojointure dans localisation.

    On est sencé mettre un ondelete cascade, ou set null.(je prefere le second)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      fields:
        id:
          type: integer
          id: true
          generator:
            strategy: AUTO
        nom:
          type: string
          lenght: 255
          notnull: true
      manyToOne:
        parent:
          targetEntity: Localisation
    Problème, j'utilise le yaml pour définir mes tables, et la doc n'existe tout bonnement pas(tout le monde s'est mis aux annotations que je trouve super crade)

    Est ce que vous savez comment faire un ondelete: set null dans ma définition ?

    Merci,
    Pierre

  4. #4
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    Salut,

    J'ai le même problème que toi. As tu trouvé une solution ?
    ---
    "Rien n'est impossible"
    http://journaldeguillaume.blogspot.com

  5. #5
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    j'ai trouvé ce path : https://github.com/doctrine/data-fixtures/issues/17

    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
     
     
    # This patch file was generated by NetBeans IDE
    # It uses platform neutral UTF-8 encoding and \n newlines.
    --- <html>ORMPurger.php (<b>5 août 2012 14:42:12</b>)</html>
    +++ <html><b>Current File</b></html>
    @@ -127,6 +127,7 @@
                 $orderedTables[] = $class->getQuotedTableName($platform);
             }
     
    +        $this->em->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
             foreach($orderedTables as $tbl) {
                 if ($this->purgeMode === self::PURGE_MODE_DELETE) {
                     $this->em->getConnection()->executeUpdate("DELETE FROM " . $tbl);
    @@ -134,6 +135,7 @@
                     $this->em->getConnection()->executeUpdate($platform->getTruncateTableSQL($tbl, true));
                 }
             }
    +        $this->em->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
         }
     
         private function getCommitOrder(EntityManager $em, array $classes)
    ça a résolu le problème chez moi
    ---
    "Rien n'est impossible"
    http://journaldeguillaume.blogspot.com

  6. #6
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Merci,

    Je n'ai pas trouvé d'autres solutions que de supprimer la DB et de la recréer... ou de supprimer les tables manuellement dans phpmyadmin.

    J'essayerai ton hack ce week end je pense.

    Pierre

Discussions similaires

  1. fixtures, getReference() ne fonctionne pas
    Par eliysha dans le forum Doctrine2
    Réponses: 12
    Dernier message: 22/02/2012, 20h50
  2. [1.x] Des fixtures qui ne fonctionne pas.
    Par Niki59 dans le forum Symfony
    Réponses: 2
    Dernier message: 07/04/2011, 19h37
  3. Drop database ne fonctionne pas sous VISTA
    Par globule2 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/03/2007, 13h23
  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