Rails + Postgres fe_sendauth:没有提供密码

嗨,我正在尝试将postgresql连接到我的rails项目。 我正在学习测试,但由于postgresql错误导致密码不正确,我的测试没有运行:

Edmunds-MacBook-Pro:langexchange edmundmai$ rake test:units rake aborted! fe_sendauth: no password supplied 

我已经阅读过了,我的pg_hba.conf文件原本就是这样的:

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. #local replication edmundmai 

这是我的rails项目中的database.yml文件

 default: &default adapter: postgresql encoding: utf8 pool: 5 username: edmundmai password: development: <<: *default database: project_development test: <<: *default database: project_test production: <<: *default database: project_production 

有谁知道我怎么解决这个问题? 我们可以聊聊,如果它更容易。

首先你应该改变:

 local all all trust 

至:

 local all all md5 

然后,您应该在PostgreSQL中使用usernamepassword创建一个super_user ,然后将新用户的用户usernamepassword添加到您的database.yml文件中。

要创建新的super_user ,请打开Pg Admin III并右键单击底部的Login Roles以创建新的超级用户。

确保您已在生产主机服务器上定义了RAILS_ENV和RACK_ENV。 我有一个类似的问题,除了rake之外一切正常,解决方案是将RACK_ENV = production添加到我的环境中。 RAILS_ENV已经投入生产。

export RACK_ENV=production

bundle exec rake db:version

您应该看到一些输出,例如:

Current version: 20121126151935

解决方案:确保您的Rails应用程序可以访问RAILS_ENV和RACK_ENV环境变量。 另外,确保它们都是相同的值。

database.yml文件的testdevelopment部分下的本地计算机上,您应该将username更改为您登录的用户名。 rails生成器使其与您的appname相同,但不起作用。 production部分将取决于您的生产设置。 如果你使用heroku,你不需要在那里改变任何东西。

您只需要使用pgadmin在postgres中创建user / passw和schema(db),并将user / passw放在database.yml中。 当我尝试使用rake db:create in current rails project文件夹创建数据库时,它失败了,并向我扔了错误,无法为postgreSQL适配器创建错误。 之后我用pgadmin创建了rails项目的模式,每次都没有任何pg_hba.conf的变化。