[How to]マイグレーション状況確認方法+特定ファイルのマイグレート方法
チーム開発をしていて、マイグレーションが読み込めてなく、ページが表示されないことがあったので、備忘録として以下にまとめます。
マイグレートできていないファイルの確認
マイグレーションファイルが全てマイグレートできていないと、ページは表示されません。
そんなときは、まずマイグレーションの状況を確認することから始めましょう。
$ 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'
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in <top (required)>'
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in <top (required)>'
load'
bin/rails:3:in
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'
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in
/Users/Desktop/projects/freemarket_sample_60ce/bin/rails:9:in <top (required)>'
require'
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in
/Users/Desktop/projects/freemarket_sample_60ce/bin/spring:15:in <top (required)>'
load'
bin/rails:3:in
bin/rails:3:in <main>'
``
Tasks: TOP => db:migrate:up
(See full trace by running task with --trace)
以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。
Author And Source
この問題について([How to]マイグレーション状況確認方法+特定ファイルのマイグレート方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Tatsu88/items/233e724e03139bddf30a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .