44

我在将 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 上运行。

4

13 回答 13

82

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

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

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

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

于 2011-07-13T08:01:10.607 回答
21

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

heroku rake db:migrate

:)

于 2011-04-08T00:00:55.700 回答
19

根据我的经验(Rails 3.1,Sedar stack),运行后pg:resetdb:migrate可能必须运行heroku restart.

于 2012-01-08T23:28:12.017 回答
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
于 2012-10-24T21:21:40.987 回答
1

你在用设计吗?升级到 2.0 时我遇到了这个确切的问题 - 您必须手动更改迁移文件。

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

于 2012-06-12T16:37:09.067 回答
1

就我而言,我还必须销毁并重新创建我的应用程序。我运行 rake db:migrate 时未提交迁移文件,无论出于何种原因,pg:reset 都无法正常工作。

于 2012-01-05T16:59:48.407 回答
0

就我而言,症状是相同的,但根本原因和补救措施却有所不同。花了几个小时在这上面。希望这篇文章能节省其他人的时间!我在用:

一切在 SQLite 本地运行良好,但在 Heroku 上得到相同的 PG 错误。事实证明,ActiveScaffold 以某种方式阻止 Heroku push 成功运行 rake 任务,原因是类似于上面的错误。因此,如果您尝试运行heroku rake db:migrate 或类似内容,您会得到一个缓存 22,您会在该处得到相同的错误。

现在修复:

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

    active_scaffold :<model_name> do |conf|
    end
    
  • 提交,推送到heroku
  • heroku run rake db:migrate
  • 通过运行验证一切正常heroku run rails console,然后说创建模型并保存它。
  • 现在恢复更改(即带回active_scaffold上面的块)
  • 提交,推送到heroku
  • 你在做生意!
于 2012-04-13T05:55:51.103 回答
0

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

于 2012-10-24T17:04:50.500 回答
0

经过数小时筛选答案后,我意识到当您指定

rails new MYAPP -database POSTGRESQL

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

于 2014-06-24T03:12:07.447 回答
0

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

于 2011-03-27T18:25:23.897 回答
0
rake db:drop
rake db:create
rake db:migrate
于 2013-10-30T10:30:26.533 回答
0

我遇到了类似的问题并运行heroku run rake db:resetheroku run rake db:migrate解决了这个问题。我想我只是没有运行正确的迁移来解决问题。

于 2015-06-22T21:02:52.617 回答
0

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

于 2016-02-15T23:42:03.133 回答