Postgres db无法使用Heroku

时间:2018-05-07 21:59:32

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

我花了几个小时搞清楚如何启动和运行数据库。我创建了一个新的rails应用程序,并希望将其部署到heroku。我按照heroku的指示(从sqlite3 - > postgresql切换)但它只是不起作用。

这是在我的database.yml文件中:

default: &default
  adapter: postgresql
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  url: <%= ENV['DATABASE_URL'] %>

我无法在数据库中创建或播种任何数据。有时它执行db:migrate,但即使这样它也不会创建任何东西。这是我跑步时得到的:

heroku run rake db:create

FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.

有没有人知道如何解决这个问题?我不再有任何线索......

谢谢!

3 个答案:

答案 0 :(得分:2)

您无法使用db:create在Heroku上创建数据库(您也不能删除它)。添加加载项(例如Heroku Postgres)时会创建数据库。您只能迁移和播种。如果你想重新开始,你可以使用pg:reset(而不是drop and create)

所以正确的顺序应该是:

如果你想重新开始

  • rake pg:reset
  • rake db:migrate
  • rake db:seed

来自Heroku文档:https://devcenter.heroku.com/articles/heroku-postgresql

  

分配数据库的PostgreSQL用户无权创建或删除数据库。要删除并重新创建数据库,请使用pg:reset。

答案 1 :(得分:2)

默认情况下,您无需在heroku上创建数据库。 只需运行heroku run rails db:migrate,其他内容将由heroku本身处理。

另外,database.yml env。

应将Production更改为以下内容
production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

默认情况下,您的rails应用已分配Postgres addon。 您可以通过在控制台中运行命令heroku addons来检查这一点。

来源 -

  1. Heroku Getting Started Guide
  2. Heroku Postgres Addon Guide

答案 2 :(得分:2)

根据给定的堆栈跟踪,您似乎正在尝试在heroku上创建数据库,这反过来又会给您权限拒绝错误。

首先,您不需要运行

heroku run rake db:create

改为运行

heroku run rake db:migrate

它应该迁移失败的迁移。

要检查迁移的当前状态,请运行以下命令:

heroku run rake db:migrate:status

你提到的其他观点:

- &GT;我无法在数据库中创建或播种任何数据 如上所述,您无法创建数据库,因为heroku会为您执行此操作。 要在数据库中播种数据,请运行以下命令:

heroku run rake db:seed