我有一个现有的Rails应用程序,它以前在我的本地笔记本电脑(运行OSX)上成功运行,数据库存储在PostgreSQL本地。我还成功地将Rails应用程序部署到Elastic Beanstalk和RDS中的数据库 - 托管网站仍在运行。
我几个月没有触及localhost版本并尝试使用rails server -e development
启动它,但是按照惯例访问http://localhost:3000/时,我收到PG错误消息
PG :: ConnectionBad at / FATAL:用户密码验证失败 " murjfphxxxxxx"致命:主机" 115.x.x.x"没有pg_hba.conf条目, 用户" murjfphxxxxxx",数据库" d37vsvehxxxxxx",SSL关闭
Rails控制台中抛出了同样的错误。似乎开发版本正在尝试连接到AWS数据库,而不是localhost数据库,但我无法弄清楚原因。
/config/database.yml将开发环境列为:
development:
adapter: postgresql
encoding: unicode
database: <my-app>_development
host: localhost
pool: 5
username: postgres
password: <password>
我可以通过PSQL连接到localhost PG数据库并查看内容,因此看起来localhost PG数据库是有效的。
为什么开发环境会尝试连接到AWS版本的数据库?如果您需要任何进一步的信息来调试,请告诉我。
使用ruby-2.3.1,Rails 4.2.0,PostgreSQL 9.6.0.0
答案 0 :(得分:2)
你的环境中可能有DATABASE_URL
。您可以在终端输入env | grep DATABASE_URL
进行检查。
如果有,请尝试使用unset DATABASE_URL
取消设置。
正如documentation所说:
如果您同时设置了
config/database.yml
和ENV['DATABASE_URL']
Rails会将配置合并在一起。为了更好地理解这一点 我们必须看一些例子。当环境提供重复的连接信息时 变量优先。