我正在开发一个插件(这是我第一次尝试)。
该插件需要通过新的迁移来扩展数据库。我能够使用 bin/rake db:migrate 命令成功运行了这次初始迁移。
之后我发现迁移中存在一些问题,因此试图回滚数据库,然后编辑并重新运行该迁移。
然而,当我运行 bin/rake db:rollback 时,出现了以下错误:
rake aborted!
ActiveRecord::UnknownMigrationVersionError:
No migration with version number 20210820205029.
错误信息中的版本号确实与我正在处理的插件迁移相对应。
有什么建议吗?
是的,目前无法回滚插件目录中的迁移。我的做法是将迁移文件移到核心仓库:
mv plugins/discourse-example/db/migrate/20210823160357_migration.rb db/migrate/20210823160357_migration.rb
执行回滚后,再将其移回插件目录:
mv db/migrate/20210823160357_migration.rb plugins/discourse-example/db/migrate/20210823160357_migration.rb
如果你的迁移文件不是核心 db 目录中的最后一个迁移,可以使用 bin/rails db:migrate:down VERSION=20210823160357 来针对你刚刚移动的迁移执行回滚。