問題
heroku run rails db:migrate
を行うと、こんなエラーがでた
PG::UndefinedTable: ERROR: relation "param_types" does not exist
: CREATE TABLE "param_values" ("id" bigserial primary key, "name" character varying, "presentation" character varying, "param_type_id" bigint, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_e74ade1df5"
FOREIGN KEY ("param_type_id")
REFERENCES "param_types" ("id")
)
ParamValue
というテーブルを作ろうとしたら、
その中でParamType
というテーブルのid
(=param_types.id)が参照されている。
しかしParamType
というテーブルは存在しない(=UndefinedTable)ので、
ParamValue
より先に作ってください、ということ。
ローカルでmigrationできても、どうやらherokuでは
migration fileは日付順にmigrateされるらしい。
対処
ParamValue
よりも先にParamType
が作られるよう、
手動でmigration fileの日付を変更し、
ローカルで正常にmigrateされるのを確認したあと、
herokuにpushした。
手順
-
rails db:drop
→この時点でmigration fileの日付を変更してよい rails db:create
rails db:migrate
- 問題なければherokuにpush
heroku pg:reset DATABASE
heroku run rails db:migrate
おわり