无法连接到服务器:PostgreSQL 中没有该文件或目录

无法连接到服务器:PostgreSQL 中没有该文件或目录

我有一个 VPS,安装了 Ubuntu 14.04.5 LTS (GNU/Linux 2.6.32-042stab127.2 x86_64),还安装了 Postgresql。我在 ruby​​ on rails 应用程序中使用 Postgresql。突然我的应用程序停止工作并抛出错误

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

    $psql -V 
     psql (PostgreSQL) 11.0 (Ubuntu 11.0-1.pgdg14.04+2)

    $pg_config --version
      PostgreSQL 11.0 (Ubuntu 11.0-1.pgdg14.04+2)

    $postgres -V
     The program 'postgres' is currently not installed. You can install it by typing:
     apt-get install postgres-xc

   $locate bin/postgres
    /usr/lib/postgresql/11/bin/postgres
    /usr/lib/postgresql/9.3/bin/postgres
    /usr/lib/postgresql/9.4/bin/postgres
    /usr/lib/postgresql/9.5/bin/postgres

  $/usr/lib/postgresql/11/bin/postgres -V
    postgres (PostgreSQL) 11.0 (Ubuntu 11.0-1.pgdg14.04+2)

  $pg_lsclusters
  9.3 main    5432 down   postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
  11  main    5433 down   postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log

postgres 状态为 down

 $service postgresql status
 9.3/main (port 5432): down
 11/main (port 5433): down

 $systemctl status postgresql.service

  postgresql.service
  Loaded: error (Reason: No such file or directory)
 Active: inactive (dead)

 $systemctl status [email protected]

   [email protected]
   Loaded: error (Reason: No such file or directory)
   Active: inactive (dead)

$grep -H'^port'/etc/postgresql/*/main/postgresql.conf/etc/postgresql/11/main/postgresql.conf:port = 5433/etc
/postgresql/9.3/main/postgresql.conf:port = 5432

我正在尝试使用以下方式启动 Postgresql 9.3

 $service postgresql start 9.3
    * Starting PostgreSQL 9.3 database server                                                                                          
    * Failed to issue method call: Unit [email protected] failed 
     to load: No such file or directory. See system logs and 'systemctl 
     status [email protected]' for details.


  $sudo systemctl start postgresql
   Failed to issue method call: Unit postgresql.service failed to load: No 
   such file or directory. See system logs and 'systemctl status 
    postgresql.service' for details.


   $/etc/init.d# /etc/init.d/postgresql start
    * Starting PostgreSQL 11 database server                                                                                           
    * Failed to issue method call: Unit [email protected] failed to 
    load: No such file or directory. See system logs and 'systemctl status 
    [email protected]' for details.

    [fail]
   * Starting PostgreSQL 9.3 database server                                                                                          
   * Failed to issue method call: Unit [email protected] failed to 
    load: No such file or directory. See system logs and 'systemctl status 
    [email protected]' for details.
    [fail]

我无法启动 PostgreSQL。我不明白它为什么突然崩溃了,直到昨天它还运行良好。

答案1

根据pg_lsclusters,您的 PostgreSQL 实例9.3/main11/main尚未启动。这解释了“无法连接到服务器”错误。

postgresql.service[email protected]systemd单元文件,您的问题似乎是在systemctl需要它们时缺少它们​​。
请注意,systemctl默认情况下不会在 Ubuntu 14.04 上安装,因为它是最后一个不使用 systemd 的版本(请参阅Ubuntu 14.04 是否使用 systemd?但不知为何systemd却安装在了你的系统上。

使用 systemd,通常 postgres 服务文件应该由包/lib/systemd/system-generators/postgresql-generator提供的自动创建postgresql-common,并最终作为*.service中的单元文件/lib/systemd/system/

我无法猜测为什么该部件在您的系统上不工作或停止工作。

如何手动启动 PostgreSQL

pg_ctlcluster命令独立于 systemd 或 upstart 运行。您应该能够使用以下命令启动 PostgreSQL 实例:

$ sudo pg_ctlcluster 9.3 main start
$ sudo pg_ctlcluster 11 main start

答案2

我的情况systemd是在 Ubuntu 14.04 上运行,但从 16.04 开始最早支持它。所以我运行了 sudo apt-get remove systemd 我的情况是systemd在 Ubuntu 14.04 上运行,但从 16.04 开始最早支持它。所以我运行了

sudo apt-get remove systemd

至此,postgresql服务已经运行成功。

相关内容