如何避免ruby中的错误回滚迁移?

时间:2009-06-17 18:20:58

标签: ruby-on-rails migration rollback

我在迁移中的“self.drop”中有一个错误,以至于我无法回滚过去的迁移。我如何从头开始并从迁移001建立起来?还有,有没有办法做到这一点而不会丢失我的数据(它只是测试,但仍然......)

3 个答案:

答案 0 :(得分:1)

rake db:drop
rake db:create
rake db:migrate

它将重置您的数据库并运行所有迁移。如果您不想丢失数据,可以使用插件yaml_db保存:

rake db:data:dump  # stores all data in db/data.yml
...
rake db:data:load  # loads db/data.yml to database

如果迁移中有错误,可以编辑它然后尝试回滚。

答案 1 :(得分:1)

您可以在self.down迁移和回滚到以前的db版本中注释所有语句。

然后使用gui / web db client手动应用更改以在迁移之前匹配db模式。

在您能够再次运行迁移后,您的数据不会丢失。

答案 2 :(得分:0)

我意识到这是一个老问题,但imho仍然相关。如果要从头开始重新创建数据库,则不会回滚并重新运行迁移,只需执行

rake db:setup

这将使用当前所有迁移的组合状态删除,创建和填充数据库。这是因为,在大型系统中,运行所有迁移可能不再有效。但是,运行schema.rb将始终有效。

我的建议也是尽可能避免回滚迁移,除非您刚刚创建迁移并希望在将迁移推送到您的团队或任何部署之前进行一些添加/拼写错误/修复。