首页 > 解决方案 > Postgres db 无法在 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.

有谁知道如何解决这个问题?我已经没有头绪了...

谢谢!

标签: ruby-on-railsrubypostgresqlsqliteheroku

解决方案


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

所以正确的顺序应该是:

  • 添加 Heroku 附加组件(例如 Heroku Postgres)。附加组件位于:https ://elements.heroku.com/addons 。
  • 耙分贝:迁移
  • 耙分贝:种子

如果你想重新开始

  • 耙 pg:reset
  • 耙分贝:迁移
  • 耙分贝:种子

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

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


推荐阅读