1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【備忘録】Migrationファイル変更の際は注意が必要!

Last updated at Posted at 2021-04-05

Migrationファイルに変更、修正が必要になった際に気をつけなければならないことについて、
備忘録に残しておきます。

結論:rails db:rollbackコマンドを実行することでupをdownに変更してから、Migrationファイルを変更、修正する。

流れとしては、
まず以下コマンドで現在のMigrationファイルの状態を調べる。

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

するとこのように表示される。

ターミナル
database: my_portfolio3_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20210404083931  Devise create users
   up     20210404090003  Create articles
   up     20210404093852  Create comments

もしカラムを間違えて作成してしまったり、カラムの追加が必要なときに、
upになっているMigrationファイルを単に編集してrails db:migrateをしただけでは、
正しく読み込まれない。
さらに、Migrationファイルの中身とデータベースの中身に差異が生じる危険もあるため、
やってはならない。

ではどういう流れでMigrationファイル変更すればいいのかと言いますと・・・、

「まず$ rails db:rollbackを実行してから」というのが答えになります!

ターミナル
$ rails db:rollback
ターミナル
== 20210404093852 CreateComments: reverting ===================================
-- drop_table(:comments)
   -> 0.0481s
== 20210404093852 CreateComments: reverted (0.0550s) ==========================

実行後、現在のMigrationファイルの状態を以下コマンドで調べてみると・・・

ターミナル
 $ rails db:migrate:status
ターミナル
database: my_portfolio3_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20210404083931  Devise create users
   up     20210404090003  Create articles
  down    20210404093852  Create comments

1個、downになっていますね!

このようにして、1個ずつrollbackしていきます。
私の場合、編集したかったのは「Create articles」だったのであと一回rollback。

ターミナル
$ rails db:rollback
ターミナル
== 20210404090003 CreateArticles: reverting ===================================
-- drop_table(:articles)
   -> 0.0373s
== 20210404090003 CreateArticles: reverted (0.0417s) ==========================

実行後、現在のMigrationファイルの状態を以下コマンドで調べてみると・・・

ターミナル
 $ rails db:migrate:status
ターミナル
database: my_portfolio3_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20210404083931  Devise create users
  down    20210404090003  Create articles
  down    20210404093852  Create comments

「Create articles」もdownになりました!

あとは、単純にMigrationファイルを編集して、そのあとrails db:migrateを実行する。

(補足)ちなみに削除する際は下記コマンドを実行。

$ rm db/migrate/20210704125813_create_tweets_rb

実行までしたあと、念の為以下コマンドで確認してみると、

ターミナル
 $ rails db:migrate:status
ターミナル
 database: my_portfolio3_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20210404083931  Devise create users
   up     20210404090003  Create articles
   up     20210404093852  Create comments

ちゃんとまたupの状態に戻っていますね!
これで編集完了です!
rails sでサーバーを立ち上げてみると、ちゃんとエラーが解消されていました^^

【参考記事】
https://pikawaka.com/rails/migration

1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?