2012-07-13 14 views
6

Buduję aplikację przy użyciu Symfony2 + Doctrine2. Moja aplikacja musi przechowywać dane geoprzestrzenne, więc napisałem odpowiednie rozszerzenia doktryny. Wszystko działa całkiem nieźle, a aplikacja działa od dłuższego czasu w środowisku produkcyjnym.Migracje doktryny, problemy przy użyciu niestandardowych typów doktryn

Teraz muszę dodać kilka nowych funkcji i muszę zaktualizować bazę danych bez usuwania wszystkich danych. I thougth temat korzystania z DoctrineMigrationBundle ale gdy uruchomię:

$ php app/console doctrine:migrations:status 

mam ten błąd:

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

Jest to istotny fragment mojego 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 

Zwyczaj typ "punkt" został zmapowany, więc co robię źle?

+0

Jestem na synfony 3 z postgres i otrzymuję ten błąd, czy wiesz, jak mogę go rozwiązać? Nie mam typów w pliku config.yml: [Doctrine \ DBAL \ DBalexception] Nieznany punkt typu bazy danych, o którym mowa, Doctrine \ DBAL \ Platforms \ PostgreSQL92Platform może tego nie obsługiwać. –

Odpowiedz

12

Odpowiadam na własne pytanie, wydaje się, że problemem jest to, że DoctrineMigrations potrzebuje również mapowania dla niestandardowego typu. Tak więc config.yml powinien wyglądać tak:

# 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

Dziękuję bardzo, to zaoszczędziło mi trochę bólu głowy :-) Niestety, ma to problem z używaniem wielu niestandardowych typów mapowanych do tego samego natywnego kodu SQL. Mam dwa typy, enumA i enumB, które zarówno mapują do ENUM (...). Doctrine widzi, aby zignorować komentarz (DC2Type: enumA). : - / – xrstf

Powiązane problemy