だから、私は実験しているアプリを持っています。
develop
私のブランチの現在の状態は良好です。spree をインストールしたいのですが、それにはデータベースへの多くの移行と変更が伴います。
そのため、自分のブランチに基づいて、シュプレー専用の新しいブランチを作成しましたdevelop
。
私は宝石をインストールし、移行を実行しました。
しかし、私はいくつかのものを台無しにしたので、自分のブランチに戻したいと思ってdevelop
ブランチを削除しましたspree
。
私はschema.rb
正常に戻り、DBも正常に戻ると思いました。
しかし、私は私のものを見てSchema.rb
、Spree テーブルがたくさんあります。
それだけでなく、ブランチSchema.rb
に移行を作成して「ドロップ」したことがわかっている他のテーブルも表示されます。spree
したがって、たとえば、ドロップされるべきであることがわかっているorders
テーブルが私の中にあります。Schema.rb
少し混乱したので、orders
spree をインストールする前に削除した他のテーブルと一緒にテーブルを削除する新しい移行を作成することにしました。テーブルが存在しないという PG エラーが表示されます。
だから....今、私のschema.rbとDBが同期していないようです。
さらに悪いことに、schema.rb とdb/migrate
フォルダーが同期しません。
create_table
そこにあるはずのないテーブルの schema.rb 内のステートメントを手動で削除するつもりでしたが、それはすべて混乱しています。
この穴から抜け出すにはどうすればよいですか? また、今後それを防ぐにはどうすればよいでしょうか?
要約すれば
DB
スプリー前の状態
- 表 A
- 表 B
- 表 C
酒宴状態
- 表 A (削除済み)
- 表 B (削除済み)
- 表 C
- Spree_Table_A
- Spree_Table_B
スプリー後の状態
- 表 A (削除済み)
- 表 B (削除済み)
- 表 C
- Spree_Table_A
- Spree_Table_B
基本的にSpree Stateと同じ
DB/移行フォルダー
スプリー前の状態
- テーブル A の移行
- 表 B の移行
- 表 C の移行
酒宴状態
- テーブル A を削除するための移行
- テーブル B を削除するための移行
- 表 C の移行
- Spree_Table_A の移行
- Spree_Table_B の移行
スプリー後の状態
- テーブル A の移行
- 表 B の移行
- 表 C の移行
「Post-Spree State」の移行は、「Post-Spree State」の DB の状態と同期しないことに注意してください。