Доктрина очень капризна, даже порядок объявлений атрибутов в таблице важен (в частности для ManyToMany).
Я обычно делаю так.
Автоматически генерируемые имена индексов использую только для отношений ManyToMany (потому что доктрина не поддерживает другие :))
Всё остальное пишу руками.
Далее делаю
doctrine:mapping:import
(эта функция кстати депрекейтет и скоро удалят, если никто не вызовется поддерживать) и сверяю с тем, что написано у меня, т.к Доктрина очень капризна, у вас может быть всё правильно написано, но не в том порядке или не в том месте.
Я не знаю как там с MySQL, но в PostgreSQL все индексы и комментарии (за исключением внешних ключей) объявляю только через отдельные:
$this->addSql();
Например:
$this->addSql('COMMENT ON COLUMN table.field IS \'(DC2Type:datetime_immutable)\'');
Потому что доктрина не всегда видит или не любит, если всё это делать сразу при объявление таблиц. Это конечно звучит как бред, но работая с доктриной и набив шишки некоторые моменты уже обходишь за километр проверенными решениями.