2

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

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

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

1 回答 1

2

更改 database.yml 中的端口

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

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

当使用 Unix 域套接字时,host 提供目录,port 提供套接字名称的数字部分。路径应该是绝对的。这同样适用于任何基于 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"?
于 2013-05-05T08:16:17.607 回答