Запрошен неизвестный тип базы данных.

Так что моя проблема в том, что я добавил столбец типа tsvector в таблицу, не добавляя его в класс сущности, и теперь, когда я хочу запустить doctrine:schema:update --force это дает мне эту ошибку

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

что мне теперь делать, мне нужно создать тип tsvector в доктрине или удалить столбец tsvector, обновить схему с помощью строки commande, а затем добавить столбец tsvector обратно?

3 ответа

Решение

Вы должны всегда регистрировать любой тип, который вы используете, и который не поддерживается доктриной, это наиболее очевидный пример регистрации типа 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

Если вы не планируете использовать его с Doctrine, вы можете просто добавить следующее в конфигурацию Doctrine.

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

Очевидно, что слой доктрины абстракции не знает такого типа, поэтому он не может использовать такой типизированный столбец, даже если столбец уже определен в таблице базы данных...

Рассмотрите возможность регистрации нового типа доктрины. Есть пример реализации типа tsvector https://gist.github.com/darklow/3129096

Другие вопросы по тегам