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

时间:2011-03-27 17:28:50

标签: ruby-on-rails postgresql heroku rails-activerecord

我在将我的Rails应用程序部署到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。

13 个答案:

答案 0 :(得分:80)

我遇到了同样的问题。要解决此问题,重置数据库会更容易。

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

然后,我的案例成功完成了迁移:)

虽然在这种情况下这是一个很好的解决方案,但不要在生产中这样做。它将删除数据库中的所有记录

答案 1 :(得分:19)

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

答案 2 :(得分:18)

在我意识到必须这样做之前,我遇到了同样的问题:

heroku rake db:migrate

:)

答案 3 :(得分:7)

我的heroku版本:

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

为了解决这个问题,只需打开终端并运行:

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

答案 4 :(得分:1)

在我的情况下,我还必须销毁并重新创建我的应用程序。我运行了rake db:使用未提交的迁移文件进行迁移,无论出于何种原因,pg:reset都无法正常工作。

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

在我的情况下,症状是相同的,但根本原因和补救措施有些不同。花了好几个小时。希望这篇文章可以节省其他人那些时间! 我正在使用:

在SQLite上本地运行正常,但在Heroku上获得相同的PG错误。事实证明,由于类似于上面的错误,ActiveScaffold以某种方式阻止Heroku推送成功运行rake任务。所以你得到一个缓存22,如果你试图运行 heroku rake db:migrate 或类似的东西,你会得到同样的错误。

现在修复:

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

    active_scaffold :<model_name> do |conf|
    end
    
  • 提交,推送到heroku
  • heroku run rake db:migrate
  • 运行heroku run rails console,然后说创建模型并保存,验证一切正常。
  • 现在还原更改(即恢复上面的active_scaffold块)
  • 提交,推送到heroku
  • 你在做生意!

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

rails new MYAPP -database POSTGRESQL

它会更改.gitignore文件,忽略整个/db/ directory,因此我的数据库永远不会被推送到heroku。请小心删除它,或者至少在你向上推的地方没有你的用户名和密码。

答案 11 :(得分:0)

我遇到了类似的问题,并运行heroku run rake db:resetheroku run rake db:migrate来解决问题。我想我还没有进行适当的迁移来解决这个问题。

答案 12 :(得分:0)

此错误可能有很多原因。但是,对于我的应用程序,问题是我在运行迁移之前没有退出应用程序(?)。所以走这条路:  http://name_of_my_app.herokuapp.com/logout 为我解决了这个问题。