Проблемы включения Enum в Symfony2 / Doctrine2

В качестве предисловия я попробовал каждое решение, предложенное этот вопрос StackExchange.

Это ошибка дана:

[Doctrine\DBAL\DBALException]
Unknown column type "enumAddressSource" requested. Any Doctrine type t
hat you use has to be registered with \Doctrine\DBAL\Types\Type::addTy
pe(). You can get a list of all the known types with \Doctrine\DBAL\Ty
pes\Type::getTypesMap(). If this error occurs during database introspe
ction then you might have forgot to register all database types for a
Doctrine Type. Use AbstractPlatform#registerDoctrineTypeMapping() or h
ave your custom types implement Type#getMappedDatabaseTypes(). If the
type name is empty you might have a problem with the cache or forgot s
ome mapping information.

Эта ошибка идентична той, которую я получил до того, как попробовал какие-либо исправления.

Это текущий код Doctrine в файле config.yml:

doctrine:
dbal:
driver:   pdo_mysql
host:     "%database_host%"port:     "%database_port%"dbname:   "%database_name%"user:     "%database_user%"password: "%database_password%"charset:  UTF8
mapping_types:
enum: string
enumAddressSource: string
# if using pdo_sqlite as your database driver:
#   1. add the path in parameters.yml
#     e.g. database_path: "%kernel.root_dir%/data/data.db3"#   2. Uncomment database_path in parameters.yml.dist
#   3. Uncomment next line:
#     path:     "%database_path%"
orm:
auto_generate_proxy_classes: "%kernel.debug%"naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true

Соответствующий код в каталоге vendor / doctrine / dbal / lib / Doctrine / DBAL / Platforms / MySqlPlatform.php:

protected function initializeDoctrineTypeMappings()
{
$this->doctrineTypeMapping = array(
'tinyint'       => 'boolean',
'smallint'      => 'smallint',
...
'enum'          => 'string',
'enumAddressSource' => 'string',
);

Я бы попробовал воспользоваться советом, показанным здесь: Учебная книга доктрины, но в статье не указано, в какой файл следует вводить этот код (в частности, в отношении варианта 1). Мне также кажется, что показанный код будет покрыт кодом, введенным внизу второго примера кода.

Это происходит для всех перечислений в базе данных. Изменение базы данных вручную не совсем вариант. Что еще я могу попробовать?

1

Решение

не уверен в назначении: enumAddressSource: string

Не должно ли enum: string (как в строке перед ним) быть достаточно?

Получаемое вами сообщение об ошибке в основном говорит о том, что не существует типа с именем enumAdressSource, поэтому такой тип не может быть сопоставлен со строкой. Вы отображаете типы, а не поля здесь.

0

Другие решения

Причинами ошибки были комментарии, вложенные в столбцы базы данных MySQL. Я никогда бы не подумал, что Учение прочитает эти комментарии и попытается их интерпретировать. Удаление комментариев устранило проблему. Я не смог найти дополнительную документацию по этому вопросу. Если у кого-то есть хороший источник, пожалуйста, прокомментируйте (или отредактируйте) этот ответ.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector