【问题标题】:Does a capistrano rollback undo migrations?capistrano 回滚是否会撤消迁移?
【发布时间】:2014-10-22 00:49:07
【问题描述】:

我是新手。我有一个生产服务器,需要从 github 部署最新版本的应用程序,所以我使用的是 Capistrano。

最新版本对数据库进行了一些更改,因此进行了大量迁移,因此我将使用 deploy:migrate 进行部署。

所以我的问题是,如果我向创建的新列添加一些数据(它不会更改表中的任何现有列,只是创建新表和列)然后想要回滚,那么将限制部署:rollback 也反转所有迁移?这些新列中的数据是否被删除并且数据库恢复到以前的状态(假设我没有对数据库中的新增内容进行任何数据更改)?

谢谢!

【问题讨论】:

  • 可能与this question 相关,这里的要点是回滚在开发过程中很好,但在您的代码提交/共享或部署后就不好了。

标签: ruby-on-rails postgresql capistrano


【解决方案1】:

不,不会。您需要通过 rake 手动运行这些迁移的下行部分,然后回滚。

但是,如果您当前的应用不受新行的影响,则不会造成任何影响。

【讨论】:

  • 好的,它们都是使用 change 方法编写的,所以我必须手动执行 rake db:rollback 以获取我想要回滚的迁移数量,一旦它们全部关闭,我'll do deploy:rollback?
  • @Achint rake db:migrate:down VERSION=xxxx。可能有一种方法可以一次性完成,但我不确定。
  • 对,我可能会给出步骤数或版本。那么在我恢复到以前的版本之后,运行 deploy:rollback 基本上会将实际代码和符号链接回滚到以前的版本?
  • @Achint 没错。这就是 deploy:rollback 所做的一切,除非你有额外的钩子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2014-06-21
  • 2012-08-27
  • 2021-07-01
相关资源
最近更新 更多