On August 16, 2014 11:41:02 AM EDT, lin <jluwln@163.com> wrote:
>Hi all,
>I change the value of "unix_socket_directories" in postgresql.conf ,
>then restart the database, but it cannot connect the database used like
>this
>"psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx"
>to use the Unix domain socket。
> how to fix this issue ?
I'll start by saying that your test case is very clear, and thank you for it. I am unsure what your goal is, however.
Iassume you are trying to set up parallel postgres processes, for debugging. I've done this recently, for that reason.
First thing to point out is that you need only one of -h and -p. They are redundant options, because you only connect
topostgres either over TCP (-p) or with a unix domain socket (-h).
Second, what you're seeing is necessary. If you change the default, then psql doesn't know where to look. However, you
canrecover the old behaviour with shell tricks:
$ alias psql='psql -h /xx/xx'
$ psql -d postgres
(Personally, I wrote a short wrapper script called "client.sh" which depth-first searches for a postgres db directory
andthe runs 'psql -h' with the first one it finds; equally well you could have this script install an alias)
Are you perhaps confused about what a unix domain socket is? Why are you changing it? This is a decent description of
it:
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man4/unix.4