LoginSignup
0
0

More than 3 years have passed since last update.

逆引きrailsコマンド集【DB編(入門〜初級)】

Last updated at Posted at 2020-08-20

はじめに

Ruby on Railsで開発をしていて、MySQLのDBを修正する機会が何度もあり、その都度エラーやデータの入れ直しが発生するため、コマンドの概要ともう少し掘り下げたところまでそれぞれの意味がおさらいできればと思い、記事にしました。
ご指摘等あればよろしくお願いいたします。

入門編

①モデルファイルを作成したので、DBに反映させたい→migrate

rails g modelでモデルファイル作成後、

$ rails db:migrate

②DBを作ったが、不要になったので削除したい→drop

$ rails db:drop

③1つ前に反映したDBテーブルを修正するために、migrationを戻したい→rollback

$ rails db:rollback

入門編まとめ

・migrateを実行すると、モデルファイルに基づいてマイグレーションファイルが作られる。
・作られたマイグレーションファイルを修正し、DBに反映するためには一度rollbackを実行しDB上から該当のテーブルを下げないといけない。(この際DBに入力したデータは削除される)

初級編

①現在、どのマイグレーションファイルがDB上で有効なのか確認する→migirate:status

$ rails db:migrate:status

適用されている場合はup、適用されていない場合はdownとしてファイルがターミナル上に表示される。

②任意のファイルまでrollbackを戻したい場合→rollback STEP=[ ]

$ rails db:rollback STEP=[戻したいステップ数]

参考記事:【Rails】$rails db:rollbackしたい時の間違えない手順

③作成したDBを一旦削除して再度作成する(その1)→reset

$ rails db:reset

④作成したDBを一旦削除して再度作成する(その2)→migrate:reset

$ rails db:migrate:reset

初級編まとめ

・【resetとmigrate:resetの違い】どちらもDBを一旦dropして再度作成することは同じだが、どのファイルを元に作り直すかが異なるため、migrate:resetではマイグレーションファイルを修正していればその内容も反映して作成されるが、migrate:resetではそうならないようだ。

詳しくは以下(常にmigrate:resetを使っていれば良さそうなものだが、そうもいかない時があるようだ)
参考記事:rake db:reset と rake db:migrate:reset の違い
参考記事:rails db:migrate:resetできなかったのでrails db:resetした

中級編

入力したDBの内容を消さずにカラムを修正したい→g migrationでカラム追加→db:migrate→カラム追加用のmigrationファイル削除

参考記事:Rails カラム名変更方法
参考記事:マイグレーションを使ったカラムの追加、削除、データ型の変更 [ 自分用メモ ]

まとめ

コマンド       概要 オプションその他
migrate DBを作成
drop    DBを削除
reset     drop + migrate  マイグレーションファイルの修正は反映されない 
migrate:reset  drop + migrate  マイグレーションファイルの修正も反映される
migrate:rollback 1つ前に反映したmigrateまで STEP=[戻したいステップ数]で任意のmigrateまでDBを戻す
migrate:status 現在どこまでmigrateが反映されているか確認する

参考記事

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