您好我正在尝试将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
有谁知道如何解决这个问题?我们可以聊聊,如果它更容易。
答案 0 :(得分:21)
确保您已在生产主机服务器上定义了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环境变量。另外,确保它们的价值相同。
答案 1 :(得分:10)
首先你应该改变:
local all all trust
为:
local all all md5
然后,您应该在PostgreSQL中使用username
和password
创建 super_user ,之后将username
和password
新用户添加到您的database.yml
文件。
要创建新的super_user
,请打开Pg Admin III
并右键单击底部Login Roles
以创建新的超级用户。
答案 2 :(得分:4)
在test
文件的development
和database.yml
部分下的本地计算机上,您应该将username
更改为您登录的用户名。 rails生成器使它与您的appname相同,但不起作用。 production
部分取决于您的生产设置。如果您使用heroku,则无需更改任何内容。
答案 3 :(得分:0)
您只需要使用pgadmin在postgres中创建user / passw和schema(db),并将user / passw放在database.yml中。当我尝试使用rake db:create in current rails project folder创建数据库时,它失败了,并且向我扔了错误,无法为postgreSQL适配器创建错误。之后我使用pgadmin为rails项目创建了模式,每次都没有任何更改pg_hba.conf。