Heroku Postgres错误:PGError:错误:关系“组织”不存在(ActiveRecord :: StatementInvalid)

我在将Heroku应用程序部署到Heroku时出现问题,在尝试访问应用程序时出现此错误:

PGError:错误:关系“组织”不存在(ActiveRecord :: StatementInvalid)

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"organizations"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum 

任何人有任何想法? 这对我来说是第一次,尤其是因为我已经在Heroku上工作了一年,还没有看到类似的东西。 当然,一切工作在本地的SQLite。

提前感谢任何帮助!

– 标记

我有同样的问题。 要解决这个问题,重置数据库更容易。

  • heroku rake db:reset('heroku run rake db:reset'如果你在杉树上)
  • heroku rake db:migrate('heroku run rake db:migrate'如果你在杉树上)

然后,迁移成功为我的情况:)

虽然在这方面这是一个很好的解决scheme,但不要在生产环境中进行。 它会删除数据库中的所有logging

根据我的经验(Rails 3.1,Sedar stack)运行pg:resetdb:migrate ,可能需要运行heroku restart

我有同样的问题,直到我意识到我必须做的:

 heroku rake db:migrate 

🙂

我的英雄版本:

 heroku --version #=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3 

为了解决它只是打开你的terminal,并运行:

 heroku pg:reset DATABASE --confirm YOUR_APP_NAME heroku run rake db:setup heroku restart heroku open 

就我而言,我也必须销毁和重新创build我的应用程序。 我运行了一个rake数据库:使用不提交的迁移文件进行迁移,无论出于何种原因,pg:reset都不起作用。

你在使用devise吗? 升级到2.0时遇到了这个问题 – 您必须手动更改迁移文件。

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style

显然删除我的整个应用程序,然后从头开始重新部署固定它。 我不知道问题是什么。

在我的情况下,症状是相同的,但根本原因和补救办法有所不同。 这花了几个小时。 希望这篇文章能够节省那些时间的其他人! 我在用:

  • Heroku雪松
  • Rails 3.2
  • ActiceScaffoldgem

一切运行良好本地SQLite,但在Heroku上得到相同的PG错误。 原来,ActiveScaffold以某种方式阻止Heroku推成功运行佣金任务由于类似于上面的错误。 所以你得到一个caching22,你会得到相同的错误,如果你尝试运行heroku rake db:migrate或类似的。

现在修复:

  • 从使用“active_scaffold”的所有控制器注释掉类似于以下的代码块:

     active_scaffold :<model_name> do |conf| end 
  • 提交,推向heroku
  • heroku run rake db:migrate
  • 通过运行heroku run rails console确认一切正常,然后说创build一个模型并保存。
  • 现在恢复更改(即返回上面的active_scaffold块)
  • 承诺,推向heroku
  • 你在做生意!

我保持我的本地设置尽可能接近生产,包括使用postgresql数据库,所以我有我的本地机器上的这个问题。 无论如何,我无法删除我的生产数据库。 原来我的问题只是在testing中,所以我用:rake db:test:准备修复它。

 rake db:drop rake db:create rake db:migrate 

我有一个类似的问题,并运行heroku run rake db:resetheroku run rake db:migrate来解决问题。 我想我只是没有运行适当的迁移来解决这个问题。

这个错误可能有很多原因。 然而,对于我的应用程序来说,问题是我在运行迁移(?)之前没有注销应用程序。 所以去这个path: http://name_of_my_app.herokuapp.com/logout : http://name_of_my_app.herokuapp.com/logout修复了我的问题。

经过几个小时的回答,我意识到,当你指定

 rails new MYAPP -database POSTGRESQL 

它改变.gitignore文件,忽略整个/db/ directory ,所以我的数据库永远不会被推到heroku上。 请谨慎删除它,或者至less在您推送的地方没有您的用户名和密码。