我在将我的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。
答案 0 :(得分:80)
我遇到了同样的问题。要解决此问题,重置数据库会更容易。
然后,我的案例成功完成了迁移:)
答案 1 :(得分:19)
根据我的经验(Rails 3.1,Sedar堆栈)运行pg:reset
和db: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 run rake db:migrate
heroku run rails console
,然后说创建模型并保存,验证一切正常。active_scaffold
块)答案 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:reset
和heroku run rake db:migrate
来解决问题。我想我还没有进行适当的迁移来解决这个问题。
答案 12 :(得分:0)
此错误可能有很多原因。但是,对于我的应用程序,问题是我在运行迁移之前没有退出应用程序(?)。所以走这条路:
http://name_of_my_app.herokuapp.com/logout
为我解决了这个问题。