我正在运行 Symfony 4.4.8,我想更新我的项目。所以我跑了:
composer update
它确实自动将 DoctrineMigrationsBundle ( https://packagist.org/packages/doctrine/doctrine-migrations-bundle ) 从 2.1.2 更新到 3.0.1。
Composer 最初失败是因为教义迁移.yaml 与 DoctrineMigrationsBundle 3.0.1 不兼容,所以我运行了:
composer recipes:install --force -v
composer install
但是:似乎 DoctrineMigrationsBundle v 3 具有完全不同的配置,不再使用“migrations_versions”SQL 表,而是使用新的“doctrine_migrations_versions”表和新的迁移目录('%kernel.project_dir%/migrations' '%kernel.project_dir%/src/Migrations')。
这意味着每次您这样做:
php bin/console doctrine:migrations:diff
您将进入迁移:
$this->addSql('DROP TABLE migration_versions');
我在https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html读到,您可以像这样手动在教义迁移.yaml 中设置表名:
doctrine_migrations:
storage:
table_storage:
'table_name': 'doctrine_migrations'
但这没有用,因为 v 3 表有一个额外的列“execution_time”,并且在“version”列中添加了一个命名空间(例如“DoctrineMigrations\Version20200702112735.php”)。所以两个表都不兼容。
我在任何地方都找不到有关将 DoctrineMigrationsBundle 从 v2 正确升级到 v3 的任何信息。
我必须说我对此感到惊讶,我认为“作曲家更新”是安全的。显然,如果无法升级,其中一个 symfony 捆绑包并没有自动添加版本限制。
所以我该怎么做?我应该让作曲家再次降级 DoctrineMigrationsBundle 吗?还是有什么方法可以将 DoctrineMigrationsBundle 从 v2 升级到 v3 才能正常工作?