1. 完整的错误信息
could not connect to server: No such file or directory is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
2.排查过程
2.1.首先,我们先确保postgresql在运行状态
我们可以执行命令:
sudo service postgresql status
如果提示命令不存在,则可以用另外一个命令查看运行状态
sudo systemctl status postgresql
如上图所示,则代表数据库在运行中,此时如果还是提示上述错误,则我们排查服务器侦听客户端应用程序连接的Unix域套接字。
2.2.查看服务器侦听客户端应用程序连接的Unix域套接字
首先我们排查postgresql.conf(Ubuntu一般在/etc/postgresql/9.5/main/目录下)配置文件中“unix_socket_directories”所指向的目录,这个目录一般默认配置在/tmp目录下,然后通过命令查看此目录下是否存在.s.PGSQL.5432
sudo find /tmp/ -name .s.PGSQL.5432
如果返回/tmp/.s.PGSQL.5432,则代表文件存在。
如果不存在则重启postgresql
sudo service postgresql restart
如果存在,则找一下/var/run/postgresql/.s.PGSQL.5432是否存在
sudo find /var/run/postgresql/ -name .s.PGSQL.5432
如果不存在则说明/tmp/.s.PGSQL.5432文件在启动的时候没有同步到/var/run/postgresql/.s.PGSQL.5432
可以执行命令,进行同步。
ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
此时一般就可以解决上述的问题。
如果还有其他情况,后续我会继续补充。