尝试运行 down/rollback 命令时出现 Doctrine Migration 类未找到错误

crm*_*cco 9 php doctrine symfony doctrine-orm doctrine-migrations

当我运行时,bin/console doctrine:migrations:list我看到迁移列出为:

Application\Migrations\Version20210909072642

我正在尝试回滚迁移,并且尝试了几个不同的版本:

bin/console --env=dev doctrine:migrations:execute 'Application\DoctrineMigrations\Version20210909072642' --down --no-interaction -vvv
bin/console --env=dev doctrine:migrations:execute Version20210909072642 --down --no-interaction -vvv
bin/console --env=dev doctrine:migrations:execute 20210909072642 --down --no-interaction -vvv
Run Code Online (Sandbox Code Playgroud)

最近的DoctrineMigrationsBundle更新是否改变了此功能?

每次我运行它时都会出现以下错误:

In MigrationClassNotFound.php line 15:
                                                          
  [Doctrine\Migrations\Exception\MigrationClassNotFound]  
  Migration class "20210909072642" was not found?   
Run Code Online (Sandbox Code Playgroud)

我的 Doctrine 配置如下所示:

doctrine_migrations:
    migrations_paths:
        'Application\Migrations': 'app/DoctrineMigrations'
    storage:
        table_storage:
            table_name: 'migration_versions'
Run Code Online (Sandbox Code Playgroud)

小智 11

很抱歉挖出这篇文章,但我对 Symfony 6 也有类似的担忧。

我做了测试迁移,也遇到了同样的问题。

这是我的迁移列表

+------------------------------------------+----------+---------------------+----------------+-------------+
| Migration Versions                                                                         |             |
+------------------------------------------+----------+---------------------+----------------+-------------+
| Migration                                | Status   | Migrated At         | Execution Time | Description |
+------------------------------------------+----------+---------------------+----------------+-------------+
| DoctrineMigrations\Version20220922124029 | migrated | 2022-09-22 14:41:13 | 3.352s         |             |
+------------------------------------------+----------+---------------------+----------------+-------------+
Run Code Online (Sandbox Code Playgroud)

当我使用该命令时php bin/console d:m:e --down --no-interaction DoctrineMigrations\Version20220922124029 ,我收到错误消息:

In MigrationClassNotFound.php line 15:
Migration class "DoctrineMigrationsVersion20220922124029" was not found?
Run Code Online (Sandbox Code Playgroud)

这里的 the\被转义了,所以我们必须使用 the\\来代替,例如: d:m:e --down --no-interaction DoctrineMigrations\\Version20220922124029

现在我开始[notice] Executing DoctrineMigrations\Version20220922124029 down工作了。

希望它可以帮助遇到同样情况的人。


Olu*_*ule 9

migrations_paths在您的配置中设置迁移所在的命名空间为 asApplication\Migrations和 not Application\DoctrineMigrations

使用 运行迁移命令Application\Migrations\Version20210909072642

bin/console --env=dev doctrine:migrations:execute \
'Application\Migrations\Version20210909072642' --down --no-interaction -vvv
Run Code Online (Sandbox Code Playgroud)