所以,我有一个我正在试验的应用程序。
develop我的分支目前的状态很好。我想安装 spree,但这会带来许多迁移和对 db 的更改。
所以我基于我的develop分支创建了一个新的分支,只为 Spree。
我安装了 gem,运行了迁移,以及所有这些东西。
但是,我搞砸了一些东西,所以我想恢复到我的develop分支并删除了该spree分支。
我认为我schema.rb会恢复正常,我的数据库也会恢复正常。
但后来我查看了我的Schema.rb,我看到了很多 Spree 表。
不仅如此,我还看到我的其他表Schema.rb,我知道我已经为其创建了迁移并在spree分支中“删除”。
因此,例如,我有一张我知道应该删除的orders表。Schema.rb有点困惑,我决定创建一个新的迁移来删除该orders表以及我在安装 spree 之前删除的其他表,我收到一个 PG 错误,说该表不存在。
所以....现在看来,我的 schema.rb 和 DB 没有同步。
更糟糕的是,我的 schema.rb 和我的db/migrate文件夹没有同步。
我打算手动删除create_table我的 schema.rb 中不应该存在的表的语句 - 但是这一切都是一团糟。
我如何将自己从这个洞中挖掘出来,以及将来如何防止它?
总之
D B
预狂欢状态
- 表 A
- 表 B
- 表 C
狂欢状态
- 表 A(已删除)
- 表 B(已删除)
- 表 C
- Spree_Table_A
- Spree_Table_B
狂欢后状态
- 表 A(已删除)
- 表 B(已删除)
- 表 C
- Spree_Table_A
- Spree_Table_B
与Spree State基本相同
数据库/迁移文件夹
预狂欢状态
- 表 A 的迁移
- 表 B 的迁移
- 表 C 的迁移
狂欢状态
- 迁移到删除表 A
- 迁移到删除表 B
- 表 C 的迁移
- Spree_Table_A 的迁移
- Spree_Table_B 的迁移
狂欢后状态
- 表 A 的迁移
- 表 B 的迁移
- 表 C 的迁移
请注意,“Post-Spree State”的迁移不会与“Post-Spree State”的数据库状态同步。