0

我正在运行 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 才能正常工作?

4

1 回答 1

0

我认为一切都在这里解释:https ://github.com/doctrine/migrations/blob/master/UPGRADE.md

如果您已经更新了捆绑配置,只需运行该命令:

bin/console doctrine:migrations:sync-metadata-storage

它应该工作。

于 2020-07-02T12:51:25.530 回答