LoginSignup
0
1

More than 3 years have passed since last update.

[How to]マイグレーション状況確認方法+特定ファイルのマイグレート方法

Last updated at Posted at 2020-02-01

チーム開発をしていて、マイグレーションが読み込めてなく、ページが表示されないことがあったので、備忘録として以下にまとめます。

マイグレートできていないファイルの確認

マイグレーションファイルが全てマイグレートできていないと、ページは表示されません。
そんなときは、まずマイグレーションの状況を確認することから始めましょう。

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

このコマンドを実行すると、以下のようにターミナルにステータスが表示されます。
ここで確認すべきは、ステータスの箇所です。
こちらがupになっていれば、マイグレートは成功しています。
逆にdownになっている箇所に関しては、まだマイグレートができていないファイルとなります。

ターミナル
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200111042708  Devise create users
   up     20200111055028  Create addresses
   up     20200114134313  Create products
   up     20200114134324  Create images
   up     20200119082708  Create creditcards
   up     20200120100937  Create categories
  down    20200122131722  Create sns credentials
   up     20200125120245  Create comments

今回で言えば、Create sns credentialsがdownとなってます。
このファイルをマイグレートしましょう。

特定のファイルのマイグレート

上記でファイルが特定できましたので、マイグレートしましょう。
ベタに[rails db:migrate]でも、問題ありませんが、数が多くなると厄介なので、特定のファイルのみをマイグレートします。
そんな時は、以下のコマンドを実行します。
version=以降に関しては、上記ステータスで確認したMigration IDを入力すれば完璧です!

ターミナル
$rails  db:migrate:up VERSION=20200122131722

上記コマンド実行しましたので、ステータスを改めて確認しましょう。

ターミナル
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200111042708  Devise create users
   up     20200111055028  Create addresses
   up     20200114134313  Create products
   up     20200114134324  Create images
   up     20200119082708  Create creditcards
   up     20200120100937  Create categories
   up    20200122131722  Create sns credentials
   up     20200125120245  Create comments

それでも読み込めてないとき(エラー)

上記コマンドでマイグレートできていない時は、何かしらエラーが出てます!ターミナルを確認しましょう!
自分の時は以下のように既に、テーブルが既にあるよ!というエラーだったので、該当のテーブルを削除して、
解決しました!
以下、URLにてテーブルの削除の記述ございますので、ご参照ください。
https://bokunonikki.net/post/2018/0214_rails_mysql_error/

エラー文
== 20200122131722 CreateSnsCredentials: migrating =============================
-- create_table(:sns_credentials)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Index name 'index_sns_credentials_on_user_id' on table 'sns_credentials' already exists
/Users/Desktop/projects/freemarket_sample_60ce/db/migrate/20200122131722_create_sns_credentials.rb:3:in change'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in <top (required)>'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in <top (required)>'
bin/rails:3:in
load'
bin/rails:3:in `'

Caused by:
ArgumentError: Index name 'index_sns_credentials_on_user_id' on table 'sns_credentials' already exists
/Users/Desktop/projects/freemarket_sample_60ce/db/migrate/20200122131722_create_sns_credentials.rb:3:in change'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in <top (required)>'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in <top (required)>'
bin/rails:3:in
load'
bin/rails:3:in <main>'
Tasks: TOP => db:migrate:up
(See full trace by running task with --trace)
``

以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。

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