所以我的问题是我在表中添加了一个类型为tsvector的列而没有在实体类中添加它,现在当我想运行doctrine:schema:update --force
时它给了我这个错误
Unknown database type tsvector requested,
Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it.
我现在该怎么办,是否必须在doctrine中创建一个tsvector类型,或者删除tsvector列,用commande行更新架构,然后再添加tsvector列?
答案 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