请求了未知的数据库类型tsvector

时间:2013-03-30 17:05:32

标签: postgresql symfony doctrine-orm tsvector

所以我的问题是我在表中添加了一个类型为tsvector的列而没有在实体类中添加它,现在当我想运行doctrine:schema:update --force时它给了我这个错误

Unknown database type tsvector requested, 
Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it.

我现在该怎么办,是否必须在doctrine中创建一个tsvector类型,或者删除tsvector列,用commande行更新架构,然后再添加tsvector列?

3 个答案:

答案 0 :(得分:1)

你应该总是注册你使用的任何类型,而且学说不支持,这是注册tsvector类型https://gist.github.com/darklow/3129096的最明显的例子,并在你的config.yml中添加:

dbal:
    driver:   %database_driver%
    host:     %database_host%
    port:     %database_port%
    dbname:   %database_name%
    user:     %database_user%
    password: %database_password%
    charset:  UTF8
    types:
        tsvector:
            class: myProject\myBundle\Type\tsvectorType
    mapping_types:
        tsvector: tsvector

答案 1 :(得分:0)

显然,doctrine抽象层不知道这样的类型,所以它不能使用这种类型的列,即使列已经在数据库表中定义了......

考虑注册新的学说custom type。有一个tsvector类型实现的例子https://gist.github.com/darklow/3129096

答案 2 :(得分:0)

如果您不打算将其与Doctrine配合使用,则可以将以下内容添加到您的学说配置中。

dbal:
    driver:   %database_driver%
    ...
    ...
    types:
        tsvector: string
        hstore: string