1
1

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.

データベースのカラムなどを修正したい場合

Posted at

#db:migrateしたデータベースを修正したい場合

プログラミングスクールでのチーム開発学習中にデータベースの修正を行いたかったのですが、
細かい部分の知識が抜け落ちていたので、備忘録用にまとめてます。

データベースの操作に慣れていない方や、これからデータベースを学習する方の参考にもなれば幸いです。

###開発環境
DB: MySQL
Rails: 5.2.4.3

まず自分が修正したいデータベース(テーブル)の確認を行いましょう

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

すると、テーブルがこの様に出てくると思います(出てくるテーブルの数や名前はそれぞれ違ってきます)

ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s 今回はこのテーブルを修正したい
   up     20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名

ここでupとdownに注目です。

マイグレーションの修正を行うには、statusをdownの状態にしておく必要があります。

##次に自分が修正したいデータベース(テーブル)をdownにしましょう
downの状態にするにはターミナルでこの様なコマンドを実行しましょう

ターミナル
% rails db:rollback

もう一度statusを確認してみましょう

ターミナル
% rails db:migrate:status
ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s 今回はこのテーブルを修正したい
  down    20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名

あれ?

一つ下しかdownに変わってません。

というのもrollbackコマンドは一つずつしかdownに変えられないのです。

なので、もう一度やってみましょう。

ターミナル
% rails db:rollback

もう一度statusを確認してみましょう

ターミナル
% rails db:migrate:status
ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
  down    20200906141656  Create -----s 今回はこのテーブルを修正したい
  down    20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名

今度は無事に目的のテーブルをdownに出来ました。

##修正が終わった後
今回はカラム名の修正を行いたかったので、この後にマイグレーションファイルのカラム名の変更を行いました。

最後に

ターミナル
% rails db:migrate

もう一度statusを確認しておきましょう

ターミナル
% rails db:migrate:status
ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s 修正したテーブル
   up     20200907114227  Create -----s
   up     20200927061950  Create -----s
   up    20200927065357  Create -----s
※----は自分で作成したテーブル名

rails db:migrateコマンドの場合は、downのテーブルを全てupに変更します。

db:migrateは1度で全てupにするけど
db:rollbackは1つずつしかdownに出来ないんですね。

##一度にrollbackをまとめて行いたい場合

今回の様に複数回rollbackを行わないといけない場合にまとめて行える方法も紹介します

ターミナル
% rails db:rollback STEP=2

※STEP=2を入力する事でrollbackを2回分まとめて実行してくれます。

rollbackコマンドに慣れてきたら、STEPオプションも積極的に使って、作業性をあげていきましょう。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?