无法连接到服务器:" /var/run/postgresql/.s.PGSQL.5432"?

时间:2014-03-31 13:20:14

标签: ruby-on-rails ruby postgresql heroku

我在Ruby On Rails中有一个带有postgresql数据库的简单网页,但是当我运行服务器时我有这个错误,我不知道我这样做。 我使用postgresql,因为heroku需要aplication在postgresql中。

我在ubuntu 13.10工作

错误是:

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

我需要帮助

感谢

7 个答案:

答案 0 :(得分:2)

只需创建一个这样的软链接,这对我有用

$ sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

for more info

答案 1 :(得分:0)

此外,您可以强制停止然后强制启动服务器

  

sudo service postgresql stop --force

     

sudo service postgresql start --force

答案 2 :(得分:0)

由于未正确配置与数据库的连接而导致此错误,正是因为设置环境变量时出现语法错误,即

MY_APP_DB= $MY_APP_DB_NAME这是错误的,而不是MY_APP_DB=$MY_APP_DB_NAME

答案 3 :(得分:0)

sudo systemctl start postgresql

答案 4 :(得分:0)

首先,您需要确保socket file位于/var/run/postgresql/.s.PGSQL.5432中。要检查

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

如果结果显示某些内容,则问题不外乎。但是,如果文件不存在,则需要检查/tmp目录(特别是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/

然后错误应该消失了。

希望这会有所帮助。

答案 5 :(得分:0)

尝试一下对我有用的

sudo systemctl start postgresql

然后

sudo systemctl start postgresql

答案 6 :(得分:-1)

解决s.PGSQL.5432问题需要做些什么:

首先通过其他路由更改unix_socket_directories postgresql.conf路径/ tmp /

然后更新postgres和postgres加载变为,如果你想要你可以再次放置路径,并使用它并正常为postgres充电。