默认情况下,我的PostgreSQL安装在/tmp目录中创建了一个套接字,但是我的psql命令行客户端在/var/run/postgresql/.s.PGSQL.5432目录中寻找。
为了解决这个问题,我编辑了postgresql.conf并将目录更改为
很遗憾,在/var/run目录中默认情况下没有postgresql目录。所以,我创建了它并启动了服务器,一切都正常运行。但是,当我关闭并重新启动服务器时,由于某种原因,/var/run/postgresql目录会消失。这导致postgres的启动崩溃,并显示以下错误信息:
FATAL: 无法创建锁文件"/var/run/postgresql/.s.PGSQL.5432.lock":没有该文件或目录
感谢您的帮助!
为了解决这个问题,我编辑了postgresql.conf并将目录更改为
unix_socket_directories = '/var/run/postgresql/'
很遗憾,在/var/run目录中默认情况下没有postgresql目录。所以,我创建了它并启动了服务器,一切都正常运行。但是,当我关闭并重新启动服务器时,由于某种原因,/var/run/postgresql目录会消失。这导致postgres的启动崩溃,并显示以下错误信息:
FATAL: 无法创建锁文件"/var/run/postgresql/.s.PGSQL.5432.lock":没有该文件或目录
感谢您的帮助!
/var/run
是一个指向/run
的符号链接,主要用于临时创建文件(主要是 PID 文件和锁文件)。如果您希望将 PID 文件保存在永久位置,请将其放在其他地方,例如/var/postgres-socket/
或其他位置。 - Jospsql
客户端在那里查找? - sparkyspiderpsql -h /var/postgres-socket/
应该可以工作。请参考 https://www.postgresql.org/docs/9.3/static/libpq-connect.html。 - Jos