所以,我有一个我正在试验的应用程序。
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”的数据库状态同步。