Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@Tatsu88

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

More than 1 year has passed since last update.

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

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

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

ターミナル
$ 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に投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?