0
0

More than 1 year has passed since last update.

rails db:migrateしたのにDBに反映されなかった時の話①

Posted at

はじめに

1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
今回は rails db:migrateコマンドを実行した際にDBに反映されなかったことについて書きます。
長くなるので2つの記事に分けます。
まずは”NO FILE”というマイグレーションファイルができてしまったことについて書きました。
※Ruby2.6.5の環境を使用し学習しています。

事象

rails db:migrateを実行すると下記のようにエラーになりました。

ターミナル
% rails db:migrate       
== 20220310073337 CreateDietrecords: migrating ================================
-- create_table(:dietrecords)
   -> 0.0140s
== 20220310073337 CreateDietrecords: migrated (0.0141s) =======================

== 20220312031130 DeviseCreateUsers: migrating ================================
-- create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

どうやらマイグレーションの途中でエラーが出ているようです。
restコマンドなど、色々試してうまくいかないので一度エラー元と思われるusersテーブルを作り直してみましたが上記エラーは変わらず。。。
そこでrails db:migrate:statusでステータスを確認したのが下記です。
状況が悪化していますね。。。

ターミナル
% rails db:migrate:status

database: pfc_control_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20220310072650  ********** NO FILE **********
   up     20220310073337  Create dietrecords
  down    20220312031130  Devise create users

まずはNO FILEを削除するところから始めます。
touchコマンドでダミーファイルを作成し、中身を記述しておきます。

  • touch db/migrate/20220310072650_hoge.rb
db/migrate/20220310072650_hoge.rb
class Hoge < ActiveRecord::Migration[6.0]
  def change
  end
end

再度ステータス確認し、NO FILEから作成したダミーファイルに変わっていることが確認できました。

ターミナル
% rails db:migrate:status                

database: pfc_control_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20220310072650  Hoge
   up     20220310073337  Create dietrecords
  down    20220312031130  Devise create users

ダミーファイルを削除したいのでまずはステータスをdownに変更します。

ターミナル
% rails db:migrate:down VERSION=20220310072650
== 20220310072650 Hoge: reverting =============================================
== 20220310072650 Hoge: reverted (0.0120s) ====================================

これでダミーファイルのステータスが変わりました。

ターミナル
% rails db:migrate:status                     

database: pfc_control_development

 Status   Migration ID    Migration Name
--------------------------------------------------
  down    20220310072650  Hoge
   up     20220310073337  Create dietrecords
  down    20220312031130  Devise create users

rmコマンドでダミーファイルを削除します。

ターミナル
rm db/migrate/db/migrate/20190915065320_hoge.rb

これでようやく最初の状態まで戻りました。。。

ターミナル
% rails db:migrate:status                           

database: pfc_control_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20220310073337  Create dietrecords
  down    20220312031130  Devise create users

長くなるので今日はここまでにします。
明日は最終的にどうやって解決したかを書きます。
それでは:checkered_flag:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0