ruby-on-rails - 是什么导致'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
解决方案
从头开始准备数据库时,最好使用db:schema:load
- 从你的加载所有内容db/schema.rb
- 而不是尝试运行所有迁移。在本地和 Heroku 上都是如此。如果你保持你的schema.rb
检查到你的回购(就像你应该的那样),那么这应该可以解决问题:
% heroku pg:reset
% heroku run rails db:schema:load
如果您担心schema.rb
您推送的内容可能与您的“本地工作”数据库不同步,请运行rails db:schema:dump
以重建文件,将其签入您的存储库,然后首先推送新图像。
推荐阅读
- high-availability - ha中的failover和takeover有什么区别?
- flutter - 通过计算的双向通道
- python - 地图转换函数中的pyspark-invalid语法错误
- mongodb - 无法使用 Docker 运行但 exec 打开 Mongo shell
- python - Python 增量对象名称
- android - Kotlin:带有 SoundPool 运行时错误的 RecyclerView
- c# - Unity3d | 根本无法使用任何脚本(刚安装的引擎)
- typescript - 将不正确的变量类型传递给函数不会发出类型错误
- android - 如何断开通过 adb 连接的设备
- ios - 尝试在 x 天内同时安排 x 条通知