在 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 分支后,其他开发人员将如何工作?
如果迁移是可恢复的(这意味着它不会破坏重要数据),那么您只需添加一个新的迁移即可解决问题。
否则,如果您发现其中一个迁移导致任何问题,那么唯一可能的解决方案是在迁移应用于生产之前修复迁移。在这种情况下,修复迁移,但是在本地应用此类迁移的人必须:
- 完全重新加载架构 (
rake db:schema:load
) 或
- 还原该迁移(
rake db:migrate:redo
VERSION=20141208235304)
再提一个建议。迁移旨在更改数据库架构,而不是 delete/insert 或操纵数据。为此,您应该使用 rake 任务。
在我的项目中,我有这样的迁移:
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 分支后,其他开发人员将如何工作?
如果迁移是可恢复的(这意味着它不会破坏重要数据),那么您只需添加一个新的迁移即可解决问题。
否则,如果您发现其中一个迁移导致任何问题,那么唯一可能的解决方案是在迁移应用于生产之前修复迁移。在这种情况下,修复迁移,但是在本地应用此类迁移的人必须:
- 完全重新加载架构 (
rake db:schema:load
) 或 - 还原该迁移(
rake db:migrate:redo
VERSION=20141208235304)
再提一个建议。迁移旨在更改数据库架构,而不是 delete/insert 或操纵数据。为此,您应该使用 rake 任务。