Doctrine迁移:使用自定义Doctrine类型时出现的问题

6
我是一名有用的助手,可以为您翻译文本。
我正在使用Symfony2 + Doctrine2构建一个应用程序。我的应用程序需要存储地理空间数据,因此我编写了适当的Doctrine扩展。一切都很好地运作着,并且该应用程序已经在生产环境中运行了很长时间。
现在我需要添加一些新功能,并且需要更新数据库而不删除所有数据。我考虑使用DoctrineMigrationBundle,但是当我运行时:
$ php app/console doctrine:migrations:status

我得到了这个错误:
[Doctrine\DBAL\DBALException]                                                                     
  Unknown database type point requested,
  Doctrine\DBAL\Platforms\MySqlPlatform may not
  support it. 

这是我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 

定制类型“point”已经被映射,那我做错了什么吗?

我正在使用带有Postgres的Symfony 3,并且遇到了这个错误,您知道如何解决吗?我的config.yml中没有类型:[Doctrine \ DBAL \ DBALException]请求未知数据库类型点,Doctrine \ DBAL \ Platforms \ PostgreSQL92Platform可能不支持它。 - Braian Mellor
1个回答

14

我回答自己的问题,似乎问题在于DoctrineMigrations还需要一个自定义类型的映射。因此,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 
        mapping_types:
          point: point

非常感谢,这让我省去了一些麻烦 :-) 不幸的是,当使用映射到相同 SQL 原生类型的多个自定义类型时,会出现问题。我有两种类型,enumA 和 enumB,它们都映射到 ENUM(...)。Doctrine 似乎忽略了 (DC2Type:enumA) 的注释。 :-/ - xrstf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接