始めに
ポートフォリオ作成中に間違ったマイグレーションファイル
をmigrate
してしまった。
恐らく、今後も同じ様な失敗をすると考えられるため忘備録として記事にしました。
そもそもモデル
、マイグレーションファイル
、マイグレーション
とは
単語 | 意味 |
---|---|
Model (名) | (服装品・自動車などの)…型、雛形 |
migration (名) | 移住、転住、渡り、移住者群、移動する動物の群 |
migrate (動) | (…へ)移住する、定期的に(…に)移動する、渡る |
マイグレーションファイル | データベースの更新処理を行う設計図のようなもの。これをmigrateすれば、SQLを書かなくてもデータベースにテーブルが設計できる。 |
つまり
-
モデル
は 主に データベースのデータのやり取りを行う機能
を担っている。 -
マイグレーション
はSQLを書かなくてもデータベースの構造を操作できる便利な機能
のこと。 - その操作して
反映する作業
をmigrate
といい。 -
マイグレーションファイル
は反映する内容が書いてある設計図
ということになる。
私が今回失敗した内容は
誤った設計図(マイグレーションファイル
)を渡してしまい、反映(migrate
)してしまった。
ここから修正方法
まずは現状の把握
rails db:version
とコマンド入力します。
rails db:version
Running via Spring preloader in process 24830
Current version: 20220725031230
するとCurrent version: 20220725031230
:現在のバージョンは日時、と表示されます。
巻き戻そう
次に反映した状況を 一つ前の状態 に巻き戻しますrails db:rollback
rails db:rollback
rails db:rollbackRunning via Spring preloader in process 24982
== 20220725031230 ResetAllPostCacheCounters: reverting ========================
== 20220725031230 ResetAllPostCacheCounters: reverted (0.0051s) ===============
これで間違った設計図を反映する前の状態に巻き戻せたはずです。
状況を確認するために以下のコマンドを入力します
rails db:abort_if_pending_migrations (もし保留中の設計図がある場合は中止する)
You have 1 pending migration:
20220725031230 ResetAllPostCacheCounters
Run `bin/rails db:migrate` to update your database then try again.
以下翻訳
1件のマイグレーションが保留されています。 20220725031230 ResetAllPostCacheCounters ←(ミスった設計図)bin/rails db:migrate を実行してデータベースを更新してから、もう一度試してみてください。
これでどうなった、、、
現状確認の結果、rails db:rollback
で反映
状況が一つ巻き戻され、先ほどの誤った設計図は保留中となっている様です。
間違って渡してしまった設計図:マイグレーションファイルの中身を修正して反映させて作業は完了となります。
お疲れ様でした。