Я создал новый проект 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 4.2, в моем приложении laravel этой проблемы вообще не возникало






Не удалось воспроизвести вашу проблему. Но в любом случае вы можете настроить тип enum в доктрине.yaml, например
doctrine:
dbal:
.....
mapping_types:
enum: string
это решило ошибку, но БД содержит только пустой массив [] вместо [ROLE_USER]
не могли бы вы поделиться примером того, как вы добавляете эти роли
Чтобы исправить это, вы можете зарегистрировать сопоставление этого типа в своей миграции:
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
Не могли бы вы сказать вашу версию symfony? Как писал @LeshaZ, для меня тоже нет проблем, но я использую MariaDB!