尝试将本地数据库推送到Heroku后,"ActionView :: Template :: Error(表的未知主键")

the*_*ope 10 ruby postgresql ruby-on-rails heroku

对于我通过Heroku托管的Ruby-on-Rails应用程序,我最近下载了一个备份,在本地恢复,然后从外部源向数据库添加数据.一切都很好.

使用heroku pg:push <localdbname> HEROKU_DATABASE_URL --app <appname>应用程序将更新的数据库推送到Heroku之后工作正常,我可以看到新添加的数据.

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

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

根据这篇SO帖子:当ID存在时,获取"表的未知主键"

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

一种可能性是我的本地postgres数据库使用的是版本9.6,而应用程序使用的是版本9.4.Heroku数据库是一个Hobby-Basic数据库.有从Heroku的关于如何升级的Postgres版本的文档,但它不是从他们的榜样完全清楚什么,我需要做的.我猜我基本上需要创建一个新数据库,将数据从旧数据复制到新数据然后销毁旧数据库.有没有人这样做过?这样做是否需要付费?并且已经升级了Postgres的版本远程修复此问题给其他人?

Jer*_*bia 4

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

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

    Rails 生成模型广告名称:字符串 描述:文本 价格:十进制 seller_id:整数 电子邮件:字符串 img_url:字符串

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

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

另一种情况是我在 RazorSQL 中运行查询并从查询生成一个新表并将其导入到 postgres 中。问题是它只是结果表,因此它没有主键。我必须在 postgres 中手动创建它,使用ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;This给了我一个自动递增的主键字段,我必须归功于这个帮助我的答案/sf/answers/206119301/

希望这可以帮助。