我尝试建立一个postgres数据库,并在执行“ rake db:schema:load”时遇到以下错误。因此,似乎Rails尝试使用unix套接字而不是我已配置的tcp / ip连接到我的数据库(请参阅下面的database.yml)。我不明白为什么会这样。我偶然发现了以下线程,该线程确认我已正确设置了database.yml。 click here。一种想法是更改postgres配置中的方法:类型对等体:md5本地。但是,据我了解的postgres配置,我的第二行应该做的工作。此外,另一个Rails应用程序正在使用tcp / ip在同一服务器上运行,因此我希望psql配置正确。我还比较了database.yml文件,它们是相同的
[root@myserver app]# rake db:schema:load
-- enable_extension("plpgsql")
-> 0.0166s
-- create_table("qip_changes", {:force=>:cascade})
-> 0.0494s
-- create_table("users", {:force=>:cascade})
-> 0.0539s
-- add_foreign_key("qip_changes", "users")
-> 0.0037s
-- enable_extension("plpgsql")
rake aborted!
PG::ConnectionBad: FATAL: Peer authentication failed for user "my_user_name"
pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 127.0.0.1/32 md5
database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
test:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
production:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
答案 0 :(得分:0)
如果您输入数据库信息作为URL,它将通过tcp / ip正确连接。如果我们不必以这种方式输入数据库信息,我会很高兴,因为它看起来很糟,而且难以维护。
default: &default
adapter: postgresql
encoding: unicode
development:
<<: *default
# Rails 6 requires us to put this in as a url in order to force tcp/ip
url: postgresql://postgres::example@localhost:5432/dev?pool=5