我更改了 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/