【问题标题】:could not connect to server: "/var/run/postgresql/.s.PGSQL.5432"?无法连接到服务器:“/var/run/postgresql/.s.PGSQL.5432”?
【发布时间】:2014-05-10 20:30:46
【问题描述】:

我在 Ruby On Rails 中有一个带有 postgresql 数据库的简单网页,但是当我运行 sever 时出现此错误,我不知道我有。 我使用 postgresql 是因为 heroku 需要应用程序在 postgresql 中。

我在 ubuntu 13.10 工作

错误是:

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

我需要帮助

谢谢

【问题讨论】:

  • 你的 postgres 服务器在运行吗?
  • 你搜索错误信息了吗?你会发现很多关于这个的信息,具体到 mac os x。另外,您是否按照 postgres.app 安装的说明进行操作,假设您正在使用它?
  • 我使用的是 Ubuntu 13.10。我搜索了错误消息,但没有找到任何解决它。
  • 我找到了解决方案 -> 只需像这样创建一个软链接:ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432 -> 在我之后必须更改 pg_hba in line peer for md5 in line local。在此链接中正确解释此 stackoverflow.com/questions/18664074/… -> 重新启动 postgres 并且我的应用程序在本地完美运行。我很高兴……
  • @mayrues 你能写出更详细的解决方案吗?我有同样的问题

标签: ruby-on-rails ruby postgresql heroku


【解决方案1】:

试试这个对我有用的。

sudo systemctl start postgresql

然后

sudo systemctl start postgresql

【讨论】:

    【解决方案2】:

    首先,您需要确保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/
    

    然后错误应该消失。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:
      sudo systemctl start postgresql
      

      【讨论】:

      • 请始终将您的答案放在上下文中,而不仅仅是粘贴代码。有关详细信息,请参阅here
      【解决方案4】:

      由于未正确配置与数据库的连接,以及设置环境变量时出现语法错误,即

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

      【讨论】:

        【解决方案5】:

        你也可以强制停止然后强制启动服务器

        sudo service postgresql stop --force

        sudo service postgresql start --force

        【讨论】:

          【解决方案6】:

          解决s.PGSQL.5432的问题你必须做什么:

          先把unix_socket_directories postgresql.conf路径/tmp/换成另外一条路径

          然后更新postgres和postgres的负载就变成了,如果你愿意你可以把路径再放一遍,用它和postgres正常充值。

          【讨论】:

            【解决方案7】:

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

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

            more info

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-02-21
              • 1970-01-01
              • 2015-08-13
              • 1970-01-01
              • 2021-08-31
              相关资源
              最近更新 更多