ruby-on-rails - Rails PostgreSQL - 更改套接字名称/位置

标签 ruby-on-rails ruby rails-postgresql pg

我更改了 PostgreSQL 服务器的端口,因此它创建的套接字不再命名为“.s.PGSQL.5432”。

有没有办法更新/强制 Rails/pg gem 更改它查找的套接字名称?我已尝试按照建议卸载/重新安装 pg gem,但它仍然尝试查找名为 .s.PGSQL.5432 的套接字,而不是它应该查找的 .s.PGSQL.50000,并且根据 database.yml 注释, “socket”配置行不适用于 PostgreSQL。

  • 我显然可以创建一个符号链接(symbolic link),但我希望有一种更优雅的方法来解决这个问题。

最佳答案

更改database.yml中的端口

正如您所知,PostgreSQL 支持两种连接:tcp/ip 和 unix 域套接字。两者都可以使用主机和端口,但使用方式不同。

使用 TCP/IP 时,主机和端口对于运行 TCP/IP 的网络具有标准含义。

使用 Unix 域套接字时,主机提供目录,端口提供套接字名称的数字部分。路径应该是绝对的。这同样适用于任何基于 libpq 的连接(包括通过 pg gem),所以请考虑这一点:

 psql -h /tmp -p 5000 

这会给出错误消息:

$ psql -h /tmp -p 5000 
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5000"?

同样:

$ psql -h /foo -p 50000 
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/foo/.s.PGSQL.50000"?

关于ruby-on-rails - Rails PostgreSQL - 更改套接字名称/位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296558/

相关文章:

html - 如何使用 slim 语法转义 HTML 内容中的方括号?

ruby - 了解 Ruby 的基本管理实用程序吗?

ruby-on-rails - RoR 将对象添加到已经在 def 初始化中的数组?

ruby - 使用 Aruba 和 Bundler 测试基于 Ruby 的 CLI

ruby-on-rails-3 - 使用计算列对连接结果进行分页

mysql - Ruby - Rails - SQL 查询 - 重新排序搜索词中的单词

ruby-on-rails - 如何在 Rails 4 中禁用输入作为选择

ruby-on-rails - 使用加载命令在 Rails 控制台中调用脚本时传递参数

ruby-on-rails-3 - rspec 返回 "PG::Error: ERROR: relation "表名“不存在”

ruby-on-rails - Heroku 上的 Rails 4.0.1,无法创建数据库