DokkuのActionView::Template::Error (PG::UndefinedTable: ERROR: relation xxx does not exist

Dokkuでデプロイ完了後にWebサイトにアクセスすると、500エラーが表示された。

$ dokku logs [アプリ名] でログ表示したところ、以下のエラー表示。

$ dokku logs gnote
2019-05-02T09:40:33.619026419Z app[web.1]: => Booting Puma
2019-05-02T09:40:33.619222669Z app[web.1]: => Rails 5.2.2 application starting in production
〜〜〜省略〜〜〜
2019-05-02T09:53:34.455614159Z app[web.1]: F, [2019-05-02T09:53:34.455068 #13] FATAL -- : [f601323b-d419-4e72-9b23-f529dba57e7d] ActionView::Template::Error (PG::UndefinedTable: ERROR:  relation "messages" does not exist
〜〜〜省略〜〜〜

原因

ActionView::Template::Error (PG::UndefinedTable: ERROR: relation "messages" does not exist とあるのは、「messages」という名前のテーブルが見つからない、とのこと。

dokkuでRailsをデプロイしたあとは、migrateしてテーブルを作る必要があるが、それを忘れていた。

対応

$ dokku run [アプリ名] rails db:migrateを実行してテーブルを作成する。

$ dokku run gnote3 rails db:migrate
no matching process entry found
D, [2019-05-02T10:03:58.304617 #11] DEBUG -- :    (29.1ms)  CREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY)
D, [2019-05-02T10:03:58.312144 #11] DEBUG -- :    (3.7ms)  CREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)
D, [2019-05-02T10:03:58.313318 #11] DEBUG -- :    (0.3ms)  SELECT pg_try_advisory_lock(752353171148416320)
D, [2019-05-02T10:03:58.331266 #11] DEBUG -- :    (0.9ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
I, [2019-05-02T10:03:58.333882 #11]  INFO -- : Migrating to CreateMessages (20190102054139)
D, [2019-05-02T10:03:58.338959 #11] DEBUG -- :    (0.3ms)  BEGIN
== 20190102054139 CreateMessages: migrating ===================================
-- create_table(:messages)
〜〜〜省略〜〜〜

テーブルが作成されて、無事にWebサイトが表示できた。