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中使用username
和password
创建一个super_user ,然后将新用户的用户username
和password
添加到您的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
文件的test
和development
部分下的本地计算机上,您应该将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的变化。