首页 > 解决方案 > 是什么导致'PG:undefinedColumn:ERROR:'在执行初始heroku rake db:migrate

问题描述

终于将我的应用程序第一次部署到 Heroku。我得到了传统的“出了点问题”

然后我运行 heroku rake db:migrate

然后在服务器开始构建数据库模式时出现以下错误

PG::UndefinedColumn:错误:列“national_race_id”不存在

这当然是这些迁移文件之一中存在的列。应用程序在本地运行完全正常。

$ heroku run rails db:migrate --app politiscale-01
Running rails db:migrate on politiscale-01... starting, run.6665 (Free)
Running rails db:migrate on politiscale-01... connecting, run.6665 (Free)Running rails db:migrate on politiscale-01... up, run.6665 (Free)
D, [2020-07-10T03:58:08.378063 #4] DEBUG -- :    (1.3ms)  SELECT pg_try_advisory_lock(902490343136007465)
D, [2020-07-10T03:58:08.390478 #4] DEBUG -- :    (1.8ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
I, [2020-07-10T03:58:08.391630 #4]  INFO -- : Migrating to AddForeignKeyToCandidates (20200415034845)
-- add_index("candidates", "national_race_id")
D, [2020-07-10T03:58:08.401044 #4] DEBUG -- :    (2.2ms)  CREATE  INDEX  "index_candidates_on_national_race_id" ON "candidates"  ("national_race_id")
-- add_index("candidates", "national_race_id")
D, [2020-07-10T03:58:08.407393 #4] DEBUG -- :    (1.7ms)  CREATE  INDEX  "index_candidates_on_national_race_id" ON "candidates"  ("national_race_id")
D, [2020-07-10T03:58:08.409029 #4] DEBUG -- :    (1.3ms)  SELECT pg_advisory_unlock(902490343136007465)
rails aborted!
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "national_race_id" does not exist

标签: ruby-on-railsrubyheroku

解决方案


从头开始准备数据库时,最好使用db:schema:load- 从你的加载所有内容db/schema.rb- 而不是尝试运行所有迁移。在本地和 Heroku 上都是如此。如果你保持你的schema.rb检查到你的回购(就像你应该的那样),那么这应该可以解决问题:

% heroku pg:reset
% heroku run rails db:schema:load

如果您担心schema.rb您推送的内容可能与您的“本地工作”数据库不同步,请运行rails db:schema:dump以重建文件,将其签入您的存储库,然后首先推送新图像。


推荐阅读