2012-07-13 10 views
6

Sto costruendo un'applicazione utilizzando Symfony2 + Doctrine2. La mia applicazione ha bisogno di memorizzare i dati geospaziali, quindi ho scritto le estensioni doctrine appropriate. Tutto sta funzionando abbastanza bene e l'app è stata in esecuzione in un ambiente di produzione per molto tempo.Migrazioni di Doctrine, problemi nell'uso di tipi di dottrina personalizzati

Ora devo aggiungere alcune nuove funzionalità e ho bisogno di aggiornare il database senza cancellare tutti i dati. I thougth sull'utilizzo del DoctrineMigrationBundle ma quando ho eseguito:

$ php app/console doctrine:migrations:status 

ho ottenuto questo errore:

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

Questa è la sezione dedicata del mio 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 

Il costume il tipo 'punto' è stato mappato, quindi cosa sto facendo male?

+0

Io su synfony 3 con Postgres e ottengo questo errore, sapete come posso risolverlo? Non ho tipi all'interno di config.yml: [Doctrine \ DBAL \ DBALException] Punto di tipo di database sconosciuto richiesto, Doctrine \ DBAL \ Platforms \ PostgreSQL92Platform potrebbe non supportarlo. –

risposta

12

Rispondo alla mia domanda, a quanto pare il problema è che DoctrineMigrations necessita anche di un mapping per il tipo personalizzato. Così il config.yml dovrebbe essere simile a questo:

# 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

Grazie mille, questo mi ha risparmiato un po 'di mal di testa :-) Sfortunatamente, questo ha problemi quando si usano più tipi personalizzati che sono mappati allo stesso nativo SQL. Ne ho due tipi, enumA ed enumB, che entrambi mappano su ENUM (...). La dottrina osserva di ignorare il commento (DC2Type: enumA). : - / – xrstf

Problemi correlati