2012-07-13 8 views
6

Estoy creando una aplicación utilizando Symfony2 + Doctrine2. Mi aplicación necesita almacenar datos geoespaciales, así que escribí las extensiones de doctrina adecuadas. Todo funciona bastante bien y la aplicación se ha estado ejecutando en un entorno de producción durante mucho tiempo.Migraciones de Doctrine, problemas al usar tipos de doctrina personalizados

Ahora tengo que agregar algunas características nuevas y necesito actualizar la base de datos sin eliminar todos los datos. Me thougth sobre el uso del DoctrineMigrationBundle pero cuando corro:

$ php app/console doctrine:migrations:status 

Tengo este error:

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

Ésta es la sección correspondiente de mi config.yml:

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 
     types: 
      point: App\EngineBundle\DoctrineExtensions\PointType 

La costumbre tipo 'punto' ha sido mapeado, entonces ¿qué estoy haciendo mal?

+0

Estoy en synfony 3 con postgres y obtengo este error, ¿sabes cómo puedo solucionarlo? No tengo tipos dentro de config.yml: [Doctrine \ DBAL \ DBALException] Se solicitó un punto de tipo de base de datos desconocido, Doctrine \ DBAL \ Platforms \ PostgreSQL92Platform puede que no lo admita. –

Respuesta

12

Respondo mi propia pregunta, parece que el problema es que DoctrineMigrations también necesita una asignación para el tipo personalizado. Entonces el config.yml debería verse así:

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 
     types: 
      point: App\EngineBundle\DoctrineExtensions\PointType 
     mapping_types: 
      point: point 
+0

Muchas gracias, esto me salvó un poco de dolor de cabeza :-) Desafortunadamente, esto tiene problemas cuando se utilizan varios tipos personalizados que se asignan al mismo SQL nativo. Tengo dos tipos, enumA y enumB, que se asignan a ENUM (...). Doctrine seens para ignorar el comentario (DC2Type: enumA). : - / – xrstf

Cuestiones relacionadas