📝
rails: dbコマンドまとめ
普段 migrate
や create
とかしか使っていなかった rails db
コマンドですが、
実は色々あったのでまとめました。
rails: db コマンドまとめ
コマンド | 説明 | 使い方 |
---|---|---|
rails db:create | database.ymlの設定に従ってデータベースを作成 | 環境ごと: $ rails db:create [RAILS_ENV=環境(development, text, production)] すべて: $ rails db:create:all
|
rails db:drop | datebase.ymlの設定に従ってデータベースを削除 | 環境ごと: $ rails db:drop [RAILS_ENV=環境(development, text, production)] すべて: $ rails db:drop:all
|
rails db:migrate | 未実行のマイグレーションファイルを実行db/migrate 内のスクリプトファイルからdatabaseにテーブルを作成します。 |
$ rails db:migrate [VERSION=バージョン番号 オプション] |
rails db:migrate:down | 指定したmigrationファイルのself.downメソッドを実行 | rails db:migrate:down |
rails db:migrate:redo | 指定したmigrationファイルのself.downメソッドを実行 | rails db:migrate:redo [STEP=ステップ数] |
rails db:migrate:status | マイグレーションの状況を表示 | rails db:migrate:status |
rails db:migrate:up | 指定したmigrationファイルのself.upメソッドを実行 | rails db:migrate:up |
rails db:migrate:reset | テーブルの初期化 | $ rails db:migrate:reset |
rails db:encryption:init | 特定の環境でアクティブレコード(Active Record)の暗号化を構成するための鍵セットを生成 | $ rails db:encryption:init |
rails db:environment:set | データベースの環境値を設定 | $ rails db:environment:set |
rails db:fixtures:load | フィクスチャを現在の環境のデータベースにロード | $ rails db:fixtures:load |
rails dbconsole (または rails db) | コンソールを起動 |
$ rails dbconsole [オプション] 短縮形: $ rails db [オプション]
|
rails db:version | マイグレーションのバージョンを表示 | $ rails db:version [RAILS_ENV=環境(development, text, production)] |
rails db:schema:load | スキーマファイルでデータベースを作成 | $ rails db:schema:load [RAILS_ENV=環境(development, text, production)] |
rails db:schema:dump | 現在のデータベースからスキーマファイルを生成 | $ rails db:schema:dump [RAILS_ENV=環境(development, text, production)] |
rails db:schema:cache:clear | db/schema_cache.ymlファイルをクリアします。 | $ rails db:schema:cache:clear |
rails db:schema:cache:dump | db/schema_cache.ymlファイルを作成 | $ rails db:schema:cache:dump |
rails db:seed | データベースに初期データを投入 | $ rails db:seed |
rails db:seed:replant | 現在の環境の各データベースのテーブルを切り捨てseedをロード | $ rails db:seed:replant |
rails db:prepare | データベースが存在しない場合はセットアップを実行し、存在する場合はマイグレーションを実行 | $ rails db:prepare |
rails db:reset | 現在の環境に合わせてすべてのデータベースをスキーマから落として再作成しseedデータをロード | $ rails db:reset |
rails db:rollback | スキーマを前のバージョンにロールバック | $ rails db:rollback |
rails db:setup | すべてのデータベースを作成し、すべてのスキーマをロードしseedデータで初期化 | $ rails db:setup |
rails db:structure:dump | データベース構造をダンプ | $ rails db:structure:dump [SCHEMA=ダンプするファイルパス(db/my_structure.sql)] |
rails db:structure:load | structure.sqlファイルからデータベースを再構築 | $ rails db:structure:load |
rails db:system:change | 使用するデータベースを変更 | $ rails db:system:change [--to=使用するデータベース] |
補足事項:
-
rails db:migrate
コマンドの実行は、schema_migrations
テーブルを調べ、存在しない場合は作成し、db/migrate
ディレクトリ内のマイグレーションファイルをデータベースに適用、最後にschema_migrations
テーブルを更新するという流れで行われます。 -
rails dbconsole
コマンドには、環境を指定する-e
オプションや、パスワードを自動的に付与する--include-password
オプションなどがあります。また、開発環境、テスト環境、本番環境のいずれかを指定できます。
まとめ
いかがでしたでしょうか? rails db:prepare
などはRails6から導入されていたようですが知りませんでした...
きちんとリファレンスを追うのって大事ですね。
Discussion