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

Doctrine2 PHP Discussion :

[Doctrine\DBAL\DBALException] - console - update


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Par défaut [Doctrine\DBAL\DBALException] - console - update
    Bonjour à tous

    Je vous évoque un souci que j'ai peine à résoudre, sans doute même comprendre.

    J'effectue deux commande console pour mettre à jour ma base à partir d'entités. Base de données, postgresql 9.0

    J'effectue une première commande :

    php app/console doctrine:schema:update --dump-sql --verbose
    Résultat :

    [Doctrine\DBAL\DBALException]
    Unknown database type requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it
    Je reste incompris !!! Je remarque bien que l'on veut me suggérer un type de donnée liées à une variable d'un entité qui n'est pas reconnu par mon sgbdr, mais ce type est .... ?? !!! .... "RIEN". Je reste incompris.

    (je n'ai aucune erreur sur mysql... des plus étrange donc (oui en effet, je test sur deux sgbdr en parallèle)).

    J'ai donc fait une recherche syntaxique :

    -> type="
    -> type=" "
    -> type=""

    bhé oui, je recherche si j'ai une colonne qui a été mal annotée (oui je suis en annotation et non en config yml))

    rien n'y fait, rien d'incohérent.

    Deuxièmement :

    php app/console cache:warmup --env=prod --no-debug --verbose
    J'ai en retour :

    [ReflectionException]
    Class Dlk\Bundle\GeoBundle\Entity\string does not exist
    keuuuwa.....

    J'ai une entité de nom de classe "string" ? . C'est une mini blague ou ??

    Je n'ai pas de classe nomé ainsi.

    Je fais une recherche voir si c'est un appel de classe dans un controler ou autre alors :

    -> Dlk\Bundle\GeoBundle\Entity\string
    -> Entity\string
    -> \Entity\string

    Rien du tout de trouvé

    Je suis donc bien coincé, n'y comprenant plus...

    Tout mes colonne sont de type "générique" , string, date, datetime, decimal, integer, bigint

    j'ai inhibé les oids pour le moment et tsvector.

    Une piste peut-être ?

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    bonjour,

    Class Dlk\Bundle\GeoBundle\Entity\string does not exist
    cette erreur apparait généralement si tu as une méthode écrite de cette 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
     
    namespace Dlk\Bundle\GeoBundle\Entity;
    /...
    class MaClasse{
     
      /....
     
      public function setName(string $name){
        $this->name=$name;
      }
     
      /...
    }
    cela recherche une classe nommé "string" dans le namespace courant (soit "Dlk\Bundle\GeoBundle\Entity\string").

    Trouve d'ou cela vient, et tu auras sans doute également la réponse à ton problème de mapping car je suppose que cette méthode a été généré par Doctrine à partir de tes annotations

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Par défaut
    C'est tout à fait ça, bien vu "arnooo999".

    J'ai bien compris ce que tu viens d'expliquer et oui c'est une étourderie de ma part lorsque j'ai fait ma méthode du coup, tsss. Pourquoi j'ai écris ça .

    Le deuxième point et donc régler, Merci.

    Reste le premier. Je ne crois pas me tromper en disant qu'il essaye de chercher un type de donnée non reconnu par postgresql mais lequel ? ici dans l'erreur ça semble être un type "vide". Étrange. (pourquoi ça plante pas avec mysql, c'est incompréhensible).

    Moi je suis agacé du debug de symfony, il n'y a pas un outil pour bien débuguer ?

    Car en trace avoir :

    [Doctrine\DBAL\DBALException]
    Unknown database type requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it.

    Exception trace:
    () at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php:220
    Doctrine\DBAL\Platforms\AbstractPlatform->getDoctrineTypeMapping() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php:220
    Doctrine\DBAL\Schema\PostgreSqlSchemaManager->_getPortableTableColumnDefinition() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:628
    Doctrine\DBAL\Schema\AbstractSchemaManager->_getPortableTableColumnList() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:156
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTableColumns() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:226
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTableDetails() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:214
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTables() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:764
    Doctrine\DBAL\Schema\AbstractSchemaManager->createSchema() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/SchemaTool.php:677
    Doctrine\ORM\Tools\SchemaTool->getUpdateSchemaSql() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/UpdateCommand.php:103
    Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand->executeSchemaCommand() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:59
    Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/Proxy/UpdateSchemaDoctrineCommand.php:62
    Symfony\Bundle\DoctrineBundle\Command\Proxy\UpdateSchemaDoctrineCommand->execute() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Command/Command.php:224
    Symfony\Component\Console\Command\Command->run() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Application.php:194
    Symfony\Component\Console\Application->doRun() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:75
    Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Application.php:118
    Symfony\Component\Console\Application->run() at /Library/WebServer/Documents/Symfony/app/console:22
    ça n'aide pas du tout à discerner où est l'erreur dans le programme. c'est fou quand même . Il pourrai préciser la ligne où il à trouver l'erreur. J'en reviens pas... .

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Par défaut
    Je précise aussi que j'arrive à lire des informations sur mon interface renvoyées par la bdd.

    Mais voila je ne peut faire de mise à jour car il y a une erreur quelques part :

    J'ai effectué un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:mapping:info(s)
    Et toutes mes entités on le statut "OK".

    Je n'ai toujours pas trouvé quel est ce "champ" qui n'est pas reconnu par doctrine !!!! voir, qui n'est pas typé.

    Serait-ce autre chose ?


    Ps : j'utilise fosUserBundle et je vois à un endroit :

    \...\Model\Group.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    abstract class Group implements GroupInterface
    {
        protected $id;
        protected $name;
        protected $roles;
    Pas de type. Ok pas de souci, c'est écris en php.

    Par contre je vois bien que j'ai ces deux classes de mappé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [OK]   FOS\UserBundle\Entity\Group
    [OK]   FOS\UserBundle\Entity\User
    ..\Entity\Group

    Group :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    namespace FOS\UserBundle\Entity;
     
    use FOS\UserBundle\Model\Group as BaseGroup;
     
    class Group extends BaseGroup
    {
    }
    ..\Model\Group

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php
     
    namespace FOS\UserBundle\Model;
     
    abstract class Group implements GroupInterface
    {
        protected $id;
        protected $name;
        protected $roles;
     
        public function __construct($name, $roles = array())
        {
            $this->name = $name;
            $this->roles = $roles;
        }
     
        /**
         * @param string $role
         * @return Group
         */
        public function addRole($role)
        {
            if (!$this->hasRole($role)) {
                $this->roles[] = strtoupper($role);
            }
     
            return $this;
        }
     
        public function getId()
        {
            return $this->id;
        }
     
        public function getName()
        {
            return $this->name;
        }
     
        public function hasRole($role)
        {
            return in_array(strtoupper($role), $this->roles, true);
        }
     
        public function getRoles()
        {
            return $this->roles;
        }
     
        /**
         * @param string $role
         * @return Group
         */
        public function removeRole($role)
        {
            if (false !== $key = array_search(strtoupper($role), $this->roles, true)) {
                unset($this->roles[$key]);
                $this->roles = array_values($this->roles);
            }
     
            return $this;
        }
     
        /**
         * @param string $name
         * @return Group
         */
        public function setName($name)
        {
            $this->name = $name;
     
            return $this;
        }
     
        /**
         * @param array $roles
         * @return Group
         */
        public function setRoles(array $roles)
        {
            $this->roles = $roles;
     
            return $this;
        }
    }
    Es-ce là un souci ?

    Je ne pense pas, car cela fonctionné avant, d'autant plus que ce sont "juste" des classes, elles n'ont de définition "@Table", donc ne sont reconnu pour le mapping mais sont reconnu en tant qu'entité.

    Une idée ?

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Par défaut
    Toujours pas d'avancement.

    Aucun problème sur la plateforme mysql mais ça flanche sur postgresql.

    L'erreur persiste :

    PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so, 9): Library not loaded: /opt/local/lib/libicui18n.48.dylib
    Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so
    Reason: image not found in Unknown on line 0
    PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/pgsql.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/pgsql.so, 9): image not found in Unknown on line 0
    PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so, 9): image not found in Unknown on line 0



    [Doctrine\DBAL\DBALException]
    Unknown database type requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it.



    Exception trace:
    () at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php:220
    Doctrine\DBAL\Platforms\AbstractPlatform->getDoctrineTypeMapping() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php:220
    Doctrine\DBAL\Schema\PostgreSqlSchemaManager->_getPortableTableColumnDefinition() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:628
    Doctrine\DBAL\Schema\AbstractSchemaManager->_getPortableTableColumnList() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:156
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTableColumns() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:226
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTableDetails() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:214
    Doctrine\DBAL\Schema\AbstractSchemaManager->listTables() at /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:764
    Doctrine\DBAL\Schema\AbstractSchemaManager->createSchema() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/SchemaTool.php:677
    Doctrine\ORM\Tools\SchemaTool->getUpdateSchemaSql() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/UpdateCommand.php:103
    Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand->executeSchemaCommand() at /Library/WebServer/Documents/Symfony/vendor/doctrine/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:59
    Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/Proxy/UpdateSchemaDoctrineCommand.php:62
    Symfony\Bundle\DoctrineBundle\Command\Proxy\UpdateSchemaDoctrineCommand->execute() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Command/Command.php:224
    Symfony\Component\Console\Command\Command->run() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Application.php:194
    Symfony\Component\Console\Application->doRun() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:75
    Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Library/WebServer/Documents/Symfony/vendor/symfony/src/Symfony/Component/Console/Application.php:118
    Symfony\Component\Console\Application->run() at /Library/WebServer/Documents/Symfony/app/console:22


    doctrine:schema:update [--complete] [--dump-sql] [--force] [--em[="..."]]
    On remarque les warnig php :

    Pourtant, dans php.info pgsql est bien installé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PDO
    PDO support	enabled
    PDO drivers 	mysql, sqlite, sqlite2, pgsql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pdo_pgsql
    PDO Driver for PostgreSQL	enabled
    PostgreSQL(libpq) Version 	9.0.3
    Module version 	1.0.2
    Revision 	$Id: pdo_pgsql.c,v 1.7.2.11 2006/03/14 10:49:18 edink Exp $
    Php.ini
    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
     
    ; Dynamic Extensions ;
    ;;;;;;;;;;;;;;;;;;;;;;
     
    ; If you wish to have an extension loaded automatically, use the following
    ; syntax:
    ;
    ;   extension=modulename.extension
    ;
    ; For example, on Windows:
    ;
    ;   extension=msql.dll
    ;
    ; ... or under UNIX:
    ;
    ;   extension=msql.so
    ;
    ; ... or with a path:
    ;
    ;   extension=/path/to/extension/msql.so
    extension=apc.so
    extension=intl.so
    extension=pdo_pgsql.so
    extension=pgsql.so
    extension=mcrypt.so
    est dans "/usr/lib/php/extensions/no-debug-non-zts-20090626/" j'ai :

    - apc.so
    - intl.so
    - pdo_pgsql.so
    - phpcups.so

    bizarre.

    Avec tout ça je ne comprends pas. Je reste bien bloqué.

    Warning étrange - j'ai des données dans ma base - j'ai réussis à écrire dedans il y a longtemps - j'arrive toujours à lire via les pages web.

    Mais aujourd'hui, je reviens dessus, et pas possible de mettre à jour les tables.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Par défaut
    De retour,

    j'ai recrée toute ma base sous un autre nom (je n'ai pas supprimé l'autre), pour essayer.

    Et là, la commande schema:update --dump-sql ne me renvoie plus d'erreur

    Je crée donc la base via, schema:update --force

    En revanche je note que le type "tsvector" ne semble pas reconnu et mon champ associé n'est donc pas créé !!

    là est peut-être le problème.

    1 : pourquoi il n'est pas créé ? la plateforme pgsql connais ce type
    2 : je ne peut créé un nouveau type pour doctrine, il me dis que ce type est déjà présent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console cache:clear
    [Doctrine\DBAL\DBALException]
    Type tsvector already exists.


    Il n'apprécie pas ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Type::addType('tsvector', 'Pld\Bundle\LocalisationBundle\Types\TsvectorType');
    $em = $this->container->get('doctrine.orm.default_entity_manager');
    $conn = $em->getConnection();
    $conn->getDatabasePlatform()->registerDoctrineTypeMapping('TSVECTOR', 'tsvector');
    Le type n'est pas reconnu par Doctrine selon moi, mais je ne peut le rajouter. Étrange.

    Je devrai avoir ceci de crée dans ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    texte_vectorise tsvector,
     
    CREATE INDEX idx_vecteur_ascii
      ON book
      USING gin
      (texte_vectorise);
    Qu'en penseriez vous ?

    Serait-ce le souci de tout ?

    Un remède ?

    *******

    - 2 min après je me rend compte que ma colonne annoté n'avait le signe "@", donc, n'était pas pris en comtpe.

    Maintenant mon champ et mon index et bien créer, dans ma nouvelle base Hors il est de type "Btree" et non "Gin".

    De plus, en reconfigurant pour pointer sur l'ancienne base, vu que tout à fonctionné sur la nouvelle (presque -> index de mauvais type), je me dis que ça irai. Et non, le même message d'erreur : Unknown database type requested,

    C'est le type d'index "gin" qui ne plait pas et qu'il considère comme "rien" ? (car ce type est déjà présent en tant qu'index que j'avais créé manuellement depuis pgadmin). La mise à jour ne marche donc toujours pas. Synchronisation lexicale incompatible ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/06/2017, 20h34
  2. Réponses: 0
    Dernier message: 06/10/2012, 18h08
  3. Réponses: 0
    Dernier message: 26/04/2012, 11h41
  4. [Doctrine] 1.2.3 Update impossible
    Par tsuki75 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/09/2010, 15h24

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