rake db:rollback不工作?丢失dbmigrate后

时间:2014-09-18 04:05:08

标签: ruby-on-rails

我跑了脚手架'并且'迁移'

然后我感到遗憾,然后运行rails d scaffold xxx然后db:rollback

发现该计划.rb没有改变。

我虽然这是因为migrate file丢失了。如何恢复?

% rake db:migrate:status

   up     20140916064606  Create tool mvaas securities
   up     20140918034311  ********** NO FILE **********
  down    20140918035954  Create tool cvt remote focus

1 个答案:

答案 0 :(得分:1)

有两种选择:

1。使用Git

如果您的工作受版本控制,并且您之前已将错过的迁移git checkout提交到删除迁移之前,请将迁移内容git checkout再次复制回当前状态,将复制的迁移内容粘贴到具有与旧时间戳相同的时间戳的新迁移中。现在db:rollback应该有效。

2。脚手架再次

如果您丢失的迁移从未进入版本控制,但您记得在scaffold中定义的字段(查看schema.rb,如果回滚失败,所有字段仍然应该在那里)那么您可以重新-scaffold,修改新创建的迁移文件名,使其与旧文件名具有相同的时间戳,并db:rollback。然后' rails d scaffold'清理一切。

未来代码

我怀疑你已经很难学到这一点,但将来它会先为你db:rollback,然后rails d scaffold为你服务。

希望这有帮助!