🗂

「ActionView::Template::Error (PG::UndefinedTable: ERROR: relation」の対処

2021/01/05に公開

背景

Railsチュートリアルの「2.3.1 マイクロポストを探検する」にて、Micropostsを生成した後、"rails db:migrate"を実行した。
ローカル環境ではwebアプリケーションの確認ができるが、herokuでは「We're sorry, but something went wrong.」というエラーメッセージが表示され、webアプリケーションを確認することができない。

原因

"heroku logs"で確認すると、以下のようなエラーメッセージが出力されていた。

2021-01-05T01:31:02.867965+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11] ActionView::Template::Error (PG::UndefinedTable: ERROR:  relation "users" does not exist
2021-01-05T01:31:02.867966+00:00 app[web.1]: LINE 1: SELECT "users".* FROM "users"
2021-01-05T01:31:02.867966+00:00 app[web.1]: ^
2021-01-05T01:31:02.867967+00:00 app[web.1]: ):
2021-01-05T01:31:02.867968+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     12:   </thead>
2021-01-05T01:31:02.867968+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     13:
2021-01-05T01:31:02.867968+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     14:   <tbody>
2021-01-05T01:31:02.867969+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     15:     <% @users.each do |user| %>
2021-01-05T01:31:02.867969+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     16:       <tr>
2021-01-05T01:31:02.867970+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     17:         <td><%= user.name %></td>
2021-01-05T01:31:02.867970+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]     18:         <td><%= user.email %></td>
2021-01-05T01:31:02.867970+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11]
2021-01-05T01:31:02.867971+00:00 app[web.1]: [96fa1d20-cec6-4372-a2ae-f4f39cba1d11] app/views/users/index.html.erb:15

usersテーブルがないと言われている。
rails db:migrateはローカル環境のみのマイグレーションだったので、heroku環境ではDBマイグレーションができていないかった。

対処法

"heroku run rails db:migrate"heroku環境でもDBマイグレーションを行う。

masa@DESKTOP-0CNPS43:~/RailsTutorial$ heroku run rake db:migrate
Running rake db:migrate on ⬢ masa-rails-tutorial-20210104... up, run.7109 (Free)
W, [2021-01-05T01:33:45.929717 #4]  WARN -- sentry: ** [Raven] You are running on Heroku but haven't enabled Dyno Metadata. For Sentry's release detection to work correctly, please run `heroku labs:enable runtime-dyno-metadata`
I, [2021-01-05T01:33:46.031043 #4]  INFO -- : Raven 3.1.1 configured not to capture errors: DSN not set
I, [2021-01-05T01:33:48.160471 #4]  INFO -- : Migrating to CreateUsers (20210104060552)
== 20210104060552 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0190s
== 20210104060552 CreateUsers: migrated (0.0196s) =============================

I, [2021-01-05T01:33:48.205690 #4]  INFO -- : Migrating to CreateMicroposts (20210105003609)
== 20210105003609 CreateMicroposts: migrating =================================
-- create_table(:microposts)
   -> 0.0134s
== 20210105003609 CreateMicroposts: migrated (0.0140s) ========================

これで無事、herokuでもアプリケーションを確認することができました。

Discussion