在 rails 中编辑提交的迁移

Edit commited migration in rails

在我的项目中,我有这样的迁移:

 1. 20141122184434_add_column_a_to_b
 2. 20141208235304_delete_data_from_b
 3. 20141217011359_add_table
 4. 20141218183503_remove_column_b_from_c

并且他们已经为我的开发分支提交了(但不是在 master 和 production 上)。几周后(并添加了更多迁移),发现迁移 B 包含错误,并且删除了重要数据,因此我们无法将其与 master 合并。

是否有任何干净的方法来编辑迁移 20141208235304_delete_data_from_b?我知道我可以再次重新滚动、编辑和迁移,但是在我将更改提交到 develop 分支后,其他开发人员将如何工作?

如果迁移是可恢复的(这意味着它不会破坏重要数据),那么您只需添加一个新的迁移即可解决问题。

否则,如果您发现其中一个迁移导致任何问题,那么唯一可能的解决方案是在迁移应用于生产之前修复迁移。在这种情况下,修复迁移,但是在本地应用此类迁移的人必须:

  1. 完全重新加载架构 (rake db:schema:load) 或
  2. 还原该迁移(rake db:migrate:redo VERSION=20141208235304)

再提一个建议。迁移旨在更改数据库架构,而不是 delete/insert 或操纵数据。为此,您应该使用 rake 任务。