ruby-on-rails - rails 不通过 tcp/ip 连接到 postgres 但 unix socket
问题描述
我尝试设置 postgres 数据库并在执行“rake db:schema:load”时遇到以下错误。因此,rails 似乎尝试使用 unix 套接字连接到我的数据库,而不是我已配置的 tcp/ip(请参阅下面的 database.yml)。我不明白为什么会这样。我偶然发现了以下线程,它确认我已经正确设置了我的 database.yml。点击这里。一个想法是在 postgres 配置中更改方法:peer for type: local to 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
数据库.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
解决方案
如果您将数据库信息作为 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
推荐阅读
- javascript - Javascript 颜色选择器。如何在不导致浏览器崩溃的情况下显示所有 255x255x255 RGB 值?
- ios - xcode 无法预览新的 SwiftUI 项目
- javascript - java脚本箭头函数
- google-apps-script - Google App Script 根据相对于每个 cellRange 的 1 个单元格引用为多个 cellRange 提供相同的条件格式
- html - 如何使用 VBA 访问 Web?请检查我的代码
- linux - 创建默认内核头文件 (C)
- arrays - 在函数内操作字符串
- arrays - 错误:为数组赋值时,赋值给数组类型的表达式
- swift - 如何使用 SwiftUI 将图像对齐到列表行的右上角?
- javascript - 如何在不创建预渲染错误的情况下将 mailchimp 集成脚本添加到 next.js `Head`?