运行doctrine迁移回滚命令时提示Migration class not found错误如何解决
问题原因
- 第一条回滚命令的命名空间填写错误:配置中
migrations_paths指定的迁移类命名空间为Application\Migrations,但命令里写的是Application\DoctrineMigrations,和实际命名空间不匹配。 - DoctrineMigrationsBundle 3.x及以上版本确实调整了
doctrine:migrations:execute命令的参数规则,不再支持直接传入时间戳、不带命名空间的短类名,必须传入完整的带命名空间的迁移类名。
正确执行命令
bin/console --env=dev doctrine:migrations:execute 'Application\Migrations\Version20210909072642' --down --no-interaction -vvv
补充排查点
- 确认
app/DoctrineMigrations/目录下存在Version20210909072642.php文件,且文件顶部的命名空间声明为namespace Application\Migrations;,和配置完全一致 - 部分shell环境下需要对类名中的反斜杠做转义,可尝试将类名改为
Application\\Migrations\\Version20210909072642 - 如果需要简化操作,可使用版本别名回滚:回滚上一个版本执行
bin/console doctrine:migrations:migrate prev -n,回滚到最初版本执行bin/console doctrine:migrations:migrate first -n
内容的提问来源于stack exchange,提问作者crmpicco
相关产品推荐
相关产品推荐

