gpt4 book ai didi

ruby-on-rails - 尝试将本地数据库推送到 Heroku 后出现 "ActionView::Template::Error (Unknown primary key for table"

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:44 25 4
gpt4 key购买 nike

对于我通过 Heroku 托管的 Ruby-on-Rails 应用程序,我最近下载了一个备份,在本地恢复它,然后从外部来源将数据添加到数据库中。一切正常。

在使用 heroku pg:push <localdbname> HEROKU_DATABASE_URL --app <appname> 将更新后的数据库推送到 Heroku 之后该应用程序运行良好,我可以看到新添加的数据。

但是今天当我尝试在 Heroku 上登录该应用程序时,我收到了错误消息。在我的日志文件中,我看到了这个错误:

ActionView::Template::Error (Unknown primary key for table ...

根据这篇 SO 帖子:Getting "Unknown primary key for table" while the ID is there

一个用户通过多次重置数据库并将其推送到 Heroku 来解决这个问题。但是,这对我没有用。我现在至少尝试重置和推送数据库 4 次。

一种可能是我的本地 postgres 数据库使用的是 9.6 版,而应用程序使用的是 9.4 版。 Heroku 数据库是一个 Hobby-Basic 数据库。有 documentation from Heroku on how to upgrade the Postgres version但从他们的例子中我还不能完全清楚我需要做什么。我猜我基本上需要创建一个新数据库,将数据从旧的复制到新的,然后销毁旧的。有没有人这样做过?这样做会产生费用吗?升级 Postgres 版本是否为其他人远程解决了这个问题?

最佳答案

我以前遇到过类似的问题。我在 RazorSQL 的 rails 之外创建了一个 postgres 数据库。我从外部来源导入数据,当我在本地运行时一切正常。在部署时,我遇到了各种各样的问题。

  1. 我在 rails 之外创建了表,因此没有创建迁移。我不得不通过删除当前模型并生成一个新模型来重新创建表,该新模型仅在创建迁移时是旧模型的副本,例如:

    rails 生成模型 广告名称:字符串 描述:文本 价格:小数seller_id:integer email:string img_url:string

  2. 我需要从我已经创建的数据库中导入数据,在我做任何事情之前,我实际上使用这个 gem https://github.com/rroblak/seed_dump 创建了一个种子文件。当我再次创建模型(记得删除模型并重新创建它)时,我所要做的就是运行 rake db:seed 并将数据拉入。

3.我必须做的最后一件事是在模型中插入关联,例如在所有者模型中放入 has many: customers 以连接客户模型。

另一种情况是我在 RazorSQL 中运行一个查询并从该查询生成一个新表并将其导入到 postgres 中。问题是它只是结果中的一个表,因此它没有主键。我必须使用 ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY; 在 postgres 中手动创建它

希望这对您有所帮助。

关于ruby-on-rails - 尝试将本地数据库推送到 Heroku 后出现 "ActionView::Template::Error (Unknown primary key for table",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45909354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com