我的应用的本地版本运行良好,但我正在尝试将数据推送到我的实时应用。我正在运行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
答案 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: *********