Запрошено перечисление неизвестного типа базы данных, Doctrine\DBAL\Platforms\MySQL57Platform может не поддерживать его. Симфония 4

Я создал новый проект symfony4. Сделал пользовательскую сущность с помощью php bin/console make:user, затем попытался выполнить миграцию с помощью php bin/console make:migration. Но потом выскакивает ошибка

In AbstractPlatform.php line 434:

Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.

Странно то, что объект User не имеет никакого типа enum, а имеет столбец ролей json, я полагаю, это и есть причина.

 /**
 * @ORM\Column(type = "json")
 */
 private $roles = [];

Я видел несколько ответов на аналогичный вопрос для laravel, но не знаю, как это исправить в symfony4.

Не могли бы вы сказать вашу версию symfony? Как писал @LeshaZ, для меня тоже нет проблем, но я использую MariaDB!

bcag2 06.02.2019 08:39

я использую symfony 4.2, в моем приложении laravel этой проблемы вообще не возникало

Shobi 06.02.2019 09:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
2
7 819
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Не удалось воспроизвести вашу проблему. Но в любом случае вы можете настроить тип enum в доктрине.yaml, например

doctrine:
    dbal:
       .....
        mapping_types:
            enum: string

это решило ошибку, но БД содержит только пустой массив [] вместо [ROLE_USER]

Shobi 06.02.2019 09:35

не могли бы вы поделиться примером того, как вы добавляете эти роли

LeshaZ 06.02.2019 14:11

Чтобы исправить это, вы можете зарегистрировать сопоставление этого типа в своей миграции:

DB::connection()->getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');

Также вы можете зарегистрировать его на app\Providers\AppServiceProvider.php.

    public function boot() {
        // ...

        DB::connection()
            ->getDoctrineSchemaManager()
            ->getDatabasePlatform()
            ->registerDoctrineTypeMapping('enum', 'string');

        // ....
    }

Источник: https://github.com/doctrine/dbal/issues/3161#issuecomment-542814085

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