1
0

More than 3 years have passed since last update.

Herokuでデプロイ後の画面表示エラー

Last updated at Posted at 2021-07-12

 Herokuエラーのまとめ

ローカル環境では問題がなかったのに、
Herokuにデプロイ後にエラーになってしまった時の対応をまとめました。

1.実例)エラー画面

スクリーンショット 2021-07-12 16.13.00.png

エラー文章は
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

 2.とにかくエラーログを見ろ!

基本的に、エラー画面が出た時の対応はこちらです。

1.エラー画面が表示されたら作業ストップ
2.そのままターミナルへ移動
3.% heroku logsを実行
4.ログの下の行を見ていくと、エラーのHTTPステータスがある
5.HTTPのステータス番号をチェックする

過去に遭遇した私のエラーでのログはこちらです。

2021-07-11T13:41:37.358040+00:00 app[web.1]: [3026cb21-3b24-4b7d-bfe0-61607329c87e] app/controllers/users_controller.rb:4:in `show'
2021-07-11T13:41:37.364921+00:00 heroku[router]: at=info method=GET path="/users/15" host=zabuton-dayori.herokuapp.com request_id=3026cb21-3b24-4b7d-bfe0-61607329c87e fwd="133.106.152.132" dyno=web.1 connect=1ms service=82ms status=500 bytes=1827 protocol=https

状況は、ログインユーザーのマイページ(showアクション)へ遷移したいのに、
遷移できずにエラーになった。

確かにログでは
app/controllers/users_controller.rb:4:in show
があります!!

さらに下の行ではstatus=500の文字が!
※HTMLステータスの番号については、こちらのサイトがおすすめです。

3.HTTPステータス番号で理由を探る!

私が遭遇した500番のエラーは何らかのサーバ内で起きたエラー。
また、ログを見ていると

ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_5c5fbb7e936a5dc.memos' doesn't exist):

Mysql2::Errorとありました。
サーバーに問題があるのは間違いなさそうです。
memosというのは、
このアプリのマイページで、メモ機能をつけるために私が作成したテーブルです。
doesn't existということは、
memoのDBが存在していない。

はて??

ここで気づきました。
herokuでmigrateしていない!
つまり
ローカル環境とDBの状態が違うままだ!
そこでターミナルでherokuへのmigrateを実行します。

heroku run rails db:migrate

その後、確認をするとローカル環境と同じように表示されました!
Herokuのエラーが出ると、なかなか特定するのに大変そうと思われますが、
こうやってログを確認していけば、ローカル環境の時と同様にエラー原因を見つけることができます。

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