毎回忘れるので、マイグレーションコマンドをまとめてみました。
データベースを作成
db:create
データベースを作成します。
# 開発、テスト環境のDBを作成
rails db:create
config/database.yml
で定義された設定に従って、データベースが作成されます。
データベースの初期設定はsqlite3です。
dbディレクトリ配下にdevelopment.sqlite3
、test.sqlite3
が作成されます。
本番環境のDBを作成したい場合
rails db:create RAILS_ENV=production
データベースの設定
db:setup
データベースの初期設定をしてくれます。
rails db:setup
データベースの作成(rails db:create
)
スキーマの読み込み(rails db:schema:load
)
シードデータを適用(rails db:seed
)
上記のコマンドと同じ実行結果です。
データベースの削除
db:drop
rails db:create
で作成したデータベースファイルを削除します。
rails db:drop
データベースをリセット
db:reset
データベースを削除し、再設定します。
rails db:reset
データベースを削除(rails db:drop
)
データベースの設定(rails db:setup
)
上記のコマンドと同じ実行結果です。
注:このコマンドはマイグレーションを実行するのではなく、rails db:schema:load
によって、スキーマファイルからDBを作成しているので、マイグレーションをロールバックできなくなった場合に、rails db:resetを実行しても復旧できないことがあります。
db:migrate:reset
データベースを削除し、再度データベースを作成、その後マイグレーションを実行します。
rails db:migrate:reset
データベースを削除(rails db:drop
)
データベースの作成(rails db:create
)
マイグレーションの実行(rails db:migrate
)
上記のコマンドと同じ実行結果です。
db:resetとdb:migrate:resetの違い
rails db:reset
スキマーファイル(db/schema.rb
)からデータベースを作成します。マイグレーションは実行されません。
これは、マイグレーションの全履歴を一から繰り返すよりも、rails db:schema:load
でスキーマファイルを読み込む方が、高速かつエラーが起きにくい傾向があるからです。
rails db:migrate:reset
rails db:create
でデータベース作成後、マイグレーションを実行します。
マイグレーションをロールバックして、なにかしらの変更した後にDBをリセットしたい場合はこちらを使います。
マイグレーションの実行
db:migrate
未実行のマイグレーションを全て実行します(バージョンを上げる)。
rails db:migrate
未実行のchange
またはup
メソッドを実行し、未実行のマイグレーションがない場合は何もせずに終了します。
実行順序は、マイグレーションの日付(先頭の数字部分)に基づきます。
db:schema:dump
も同時に実行されます。
特定のマイグレーションだけ実行したい場合、
rails db:migrate VERSION=20180907140025
VERSION
はマイグレーション名の先頭にある数字部分(日時部分)を指定します。
マイグレーションをロールバック
db:rollback
直前に行ったマイグレーションをロールバック(実行前の状態に戻す)します。
(バージョンを一つ下げる)
rails db:rollback
change
メソッドを逆転実行するかdown
メソッドを実行する形で直前のマイグレーションにロールバックします。
複数回ロールバックしたい場合
rails db:rollback STEP=3
STEP=ロールバックする回数
db:migrate:redo
マイグレーションをロールバックしてから、再度マイグレーションを実行する。
rails db:migrate:redo
バージョンを一つ戻す(rails db:rollback)
バージョンを一つ上げる(rails db:migrate
)
上記のコマンドと同じ実行結果です。
バージョンは最終的に変更しませんが、バージョンを戻す処理が想定通り動作することを確認できます。
データベースのバージョンを確認
db:version
データベースに適用されたマイグレーションのバージョン一覧を確認できます。
rails db:version
マイグレーションの実行履歴を確認
db:migrate:status
マイグレーションを実行・ロールバックした履歴一覧を確認できます。
rails db:migrate:status
データベースにダミーデータを追加
テーブルやモデルなどの準備が出来た後、それらにダミーデータを追加できます。
rails db:seed
db/seed.rb
に記載したスクリプトが実行されます。
スキーマファイルの設定
schema:dump
現在のデータベースからスキーマファイルを生成します。
rails db:schema:dump
基本はrails db:migrate
と共に実行されます。
schema:load
スキーマファイルからデータベースを作成します。
rails db:schema:load
基本はrails db:setup
と共に実行されます。
まとめ
マイグレーションのコマンドをまとめてみました。
railsガイドにより詳細が載っているので、気になる方はどうぞ。

コメント