rails db:migrateしたのにDBに反映されなかった時の話①
はじめに
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
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
長くなるので今日はここまでにします。
明日は最終的にどうやって解決したかを書きます。
それでは
Author And Source
この問題について(rails db:migrateしたのにDBに反映されなかった時の話①), 我々は、より多くの情報をここで見つけました https://qiita.com/namaiki_2007/items/f556a58bb70a78c98621著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .