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:reset
和db: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:reset
和heroku 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在您推送的地方没有您的用户名和密码。