当前位置: 首页 > 知识库问答 >
问题:

如何修复“psql:error:xxx并在Unix域套接字上接受连接”/var/run/postgresql/.s.PGSQL.5432”

高寒
2023-03-14

如何修复此错误?

psql:错误:无法连接到服务器:没有这样的文件或目录是在本地运行并在Unix域套接字上接受连接的服务器“/var/run/postgresql/.s.PGSQL.5432”?

我们使用Docker、Postgres12和Wercker。在Wercker中运行此命令时,无法创建数据库。但是我们可以在我本地的Ubuntu环境中创建它。

sudo docker exec docker_postgres_1 psql -U postgres -c 'create database postgres_dev'

共有1个答案

贾飞章
2023-03-14

首先,您需要确保套接字文件位于/var/run/postgresql/.s.PGSQL.5432中。核实一下

$ cat /var/run/postgresql/.s.PGSQL.5432

如果结果表明了什么,那么问题就是别的。但是,如果文件不存在,你需要检查/tmpdir(特别为OSXHomebrew用户)

$ cd /tmp
$ l

total 16
drwxrwxrwt  7 root   wheel   224B Mar 11 08:03 .
drwxr-xr-x  6 root   wheel   192B Jan 23 18:35 ..
-rw-r--r--  1 root   wheel    65B Nov  7 22:59 .BBE72B41371180178E084EEAF106AED4F350939DB95D3516864A1CC62E7AE82F
srwxrwxrwx  1 shiva  wheel     0B Mar 11 08:03 .s.PGSQL.5432
-rw-------  1 shiva  wheel    57B Mar 11 08:03 .s.PGSQL.5432.lock
drwx------  3 shiva  wheel    96B Mar 10 17:11 com.apple.launchd.C1tUB2MvF8
drwxr-xr-x  2 root   wheel    64B Mar 10 17:10 powerlog

现在,有两种方法可以解决错误

您可以更改应用程序配置以查看/tmp/. s的套接字。PGSQL.5432

# config/database.yml

default: &default
  adapter: postgresql
  pool: 5
  # port: 
  timeout: 5000
  encoding: utf8
  # min_messages: warning
  socket: /tmp/.s.PGSQL.5432

您可以创建指向预期位置的符号链接

$ sudo mkdir /var/pgsql_socket
$ sudo ln /tmp/.s.PGSQL.5432 /var/pgsql_socket/
```

Then the error should go. 

Hope this helps.
 类似资料: