如何解决此错误?
psql:error:无法连接到服务器:没有这样的文件或目录是服务器在本地运行并接受Unix域套接字上的连接"/var/run/postgresql/.s.s.pgsql.5432"?
我们使用Docker,Postgres12,Wercker。当我们在Wercker中运行此命令时,我们无法创建数据库。但是我们可以在我本地的Ubuntu环境中创建它。
sudo docker exec docker_postgres_1 psql -U postgres -c 'create database postgres_dev'
首先,您需要确保socket file
位于/var/run/postgresql/.s.PGSQL.5432
中。检查
$ cat /var/run/postgresql/.s.PGSQL.5432
如果结果显示某些内容,那么问题就是其他。但是,如果没有文件,则需要检查/tmp
DIR(特别适用于OSX Homebrew
用户(
$ 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
适用于Rails用户
# 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.