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

时间:2013-03-08 14:43:08

标签: 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。

  • 我显然可以创建一个符号链接,但我希望有更优雅的方法。

1 个答案:

答案 0 :(得分:1)

更改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"?