DBを操作するRailsコマンド集(最低限知っておくべき‼︎)
概要
Railsでは色々なDBの操作コマンドが出てくるので、それぞれ理解していく必要があります。
紙に書いて説明していきます。下手くそかもしれないですが、ご了承ください🙇♂️
DBの作成、削除
以下は空のDB作成、削除コマンドです。
rails db:create
rails db:drop
migrationの実行、migrationを元に戻すコマンド
以下は空のDBにmigrationの実行、元に戻すコマンドです。
rails db:migrate
rails db:rollback
migrationの実行とはアプリケーション内のDBの構造を変更し、その変更を反映します。
この反映を元に戻すのがrollbackです。
⚫︎補足
rails db:rollback STEP=n
直近のn個のマイグレーションを取り消します。
ex)
STEP=3を指定した場合、直近の3つの未適用のマイグレーションが適用されます。これにより、データベースの状態を特定のポイントまで戻したり、特定のマイグレーションまで進めたりすることができます。
⚫︎補足
最初の状態に戻したいときは、VERSION=0オプションを使います。
$ rails db:migrate VERSION=0
rails db:migrate:status
マイグレーションの実行状況を表示します。
rails db:migrate:status
全体像
紹介した4つのコマンドの全体像です。
rails db:create #DB作成
rails db:drop #DB削除
rails db:migrate #migration実行
rails db:rollback #migrationの反映を元に戻す
rails db:dropの補足
DBを完全に削除するコマンドがrails db:drop
です。
つまり、DB内のすべてのテーブルやデータを削除します。
rails db:seed
初期データやテストデータのことで動作確認用に初めからあって欲しいデータがあります。
これがseed
です。初期データをデータベースに挿入するコマンドです。
rails db:seed
seeds.rb
というファイルがあり、ここにレコードなど作成するスクリプトを書いておくと、
rails db:seed
コマンドで初期データを保存できます。
rails db:reset
DBをリセットして初期状態に戻すコマンドです。
DBを一度作り直して、schema.rb
に沿ってDBを作り直すコマンドです。
schema.rb は、migration 実行後に自動的に更新される、データベースの定義が書いてあるファイルでしたね。
rails db:resetの注意
開発中にDBをリセットして、テストデータを消したり、新しいマイグレーションを適用できたりしますが、
rails db:reset
を実行すると、DB内のすべてのデータが消えるので、
あまり使わない方がいいみたいです。
rails db:migrate:reset
DBをリセットして、すべてのマイグレーションを最初から実行し直すコマンドです
DBの設計書(migrationファイル)に基づいて再作成するので、リセットするときはこちらのコマンドの方がいいみたいです。
その他DBコマンド集
rails db:version
現在のDBのスキーマバージョンを表示します。
rails db:version
rails db:migrate:redo
直前のマイグレーションを取り消してから再度実行します。
rails db:migrate:redo
-
最後に実行されたmigrationを取り消す(db:rollbackを実行)。
2.マイグレーションを再度実行します(db:migrateを実行)。
開発者が最新のマイグレーションをテストしたり、最後の変更を取り消して再度適用したりする時に使います。
rails db:schema:load
schema.rb
ファイルに記述されたDBのスキーマ情報を使って、DBのスキーマを再作成します。schema.rbファイルに記述されたスキーマ情報に従って、データベースが再構築されます。
rails db:schema:load
rails db:schema:dump
DBのスキーマ情報をRubyのコードとしてdb/schema.rbというファイルにダンプするコマンドです。
rails db:schema:dump
Laravelバージョン
Laravelだと以下の記事のようなコマンドです。
Discussion