PG :: ConnectionBad:致命:角色“***”不存在

时间:2017-03-30 13:07:13

标签: ruby-on-rails postgresql heroku

我的应用的本地版本运行良好,但我正在尝试将数据推送到我的实时应用。我正在运行rails db:migrate RAILS_ENV=production并收到PG::ConnectionBad: FATAL: role "***" does not exist消息。

我在我的.yml文件中使用'用户名''数据库'和'密码'作为我的heroku postgres插件的数据库凭据下的详细信息

我的.yml文件:

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

development:
  adapter: postgresql
  database: postgresql-rectangular-42683
  pool: 5
  timeout: 5000
test:
  adapter: postgresql
  database: postgresql-rectangular-42683
  pool: 5
  timeout: 5000

production:
 adapter: postgresql
 encoding: utf8
 database: ***
 pool: 5
 username: ***
 password: *********
 #host: ***.***.***.*** #-> only for third party db server

2 个答案:

答案 0 :(得分:1)

Heroku服务是动态的,可以在整个主机群中移动。因此,您应该避免硬编码这些数据库凭据和配置选项。而是通过DATABASE_URL配置变量进行连接,该变量将代表您保持最新。该here的文档。

如果您已完成这些更改并确保已将迁移推送到heroku远程,则可以通过运行heroku run rake db:migrate -a <app name>来完成迁移

答案 1 :(得分:-1)

参考postgres的CREATE ROLE命令

<强>较受欢迎的

CREATE USER foo WITH PASSWORD 'bar';

或使用现有的postgres角色

production:
adapter: postgresql
encoding: utf8
database: database_development
pool: 5
username: postgres
password: *********