Отказано в соединении для PostgreSQL, не может быть перезапущен из активного состояния (выход) - PullRequest
0 голосов
/ 11 октября 2018

Заранее спасибо за любую помощь.Я впервые задаю вопрос здесь, так что простите любые грубые ошибки.

Подробности:

  • сервер под управлением Ubuntu 18.04
  • PostgreSQL 10

Моя проблема:

Я выполнял миграции для Django 2.1 и столкнулся с этой ошибкой, несмотря на то, что некоторое время выполнял ту же команду без ошибок.

psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

Я установил, что это проблема с моей базой данных PostgreSQL, но, несмотря на все мои усилия, попал в тупик.

Так как кажется, что проблема с портом, я проверил:

$ ss -nlt
State     Recv-Q      Send-Q            Local Address:Port            Peer Address:Port     
LISTEN    0           128               127.0.0.53%lo:53                   0.0.0.0:*        
LISTEN    0           128                     0.0.0.0:22                   0.0.0.0:*        
LISTEN    0           128                     0.0.0.0:443                  0.0.0.0:*        
LISTEN    0           128                   127.0.0.1:27017                0.0.0.0:*        
LISTEN    0           128                     0.0.0.0:80                   0.0.0.0:*        
LISTEN    0           128                        [::]:22                      [::]:*

Что явно выделяется в этой части - 127.0.0.53%lo:53 - но я понятия не имею, как это исправить.Похоже, это то, что, возможно, следует читать вместо 5432 ...

Мой файл pg_hba.conf выглядит так:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
h!
ost    replication     all             ::1/128                 md5

Мой файл postgresql.conf выглядит следующим образом:

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories

Наконец, я проверил свой брандмауэр и добавил порт 5432.

5432/tcp (v6)              ALLOW       Anywhere (v6)

Некоторые другие потенциально полезные сообщения об ошибках:

$ service postgresql status
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2018-10-11 08:34:35 UTC; 17min ago
  Process: 9046 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 9046 (code=exited, status=0/SUCCESS)

Я попробовал следующие инструкции здесь со следующим выводом:

$ sudo systemctl start postgresql@10-main
Job for postgresql@10-main.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status postgresql@10-main.service" and "journalctl -xe" for details.

$ sudo systemctl status postgresql@10-main.service
● postgresql@10-main.service - PostgreSQL Cluster 10-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; indirect; vendor preset: enabled
   Active: failed (Result: protocol) since Thu 2018-10-11 08:42:52 UTC; 25s ago
  Process: 9093 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 10-main start (co

Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: 2018-10-11 08:42:52.396 UTC [9098
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: 2018-10-11 08:42:52.396 UTC [9098
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: 2018-10-11 08:42:52.396 UTC [9098
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: 2018-10-11 08:42:52.396 UTC [9098
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: 2018-10-11 08:42:52.398 UTC [9098
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: pg_ctl: could not start server
Oct 11 08:42:52 billow-droplet-1 postgresql@10-main[9093]: Examine the log output.
Oct 11 08:42:52 billow-droplet-1 systemd[1]: postgresql@10-main.service: Can't open PID file
Oct 11 08:42:52 billow-droplet-1 systemd[1]: postgresql@10-main.service: Failed with result 
Oct 11 08:42:52 billow-droplet-1 systemd[1]: Failed to start PostgreSQL Cluster 10-main.

1 Ответ

0 голосов
/ 29 ноября 2018

Сегодня столкнулся с той же проблемой.В моем случае я забыл установить listen_addresses = '*'.

В ss-nlt У меня прослушан порт 5432:

State       Recv-Q       Send-Q       Local Address:Port      Peer Address:Port
LISTEN      0        128               127.0.0.53%lo:53           0.0.0.0:*
LISTEN      0        128                 0.0.0.0:22               0.0.0.0:*
LISTEN      0        128                 0.0.0.0:5432             0.0.0.0:*
LISTEN      0        128                  [::]:22                   [::]:*
LISTEN      0        128                  [::]:5432                 [::]:*
LISTEN      0        128                   *:2377                   *:*
LISTEN      0        128                   *:7946                   *:*

Так что, в вашем случае, postgresql не прослушивает 5432. Глупое предложение: ты пробовал sudo service postgresql restart?:)

РЕДАКТИРОВАТЬ : вопрос более месяца, и вы, возможно, решаете эту проблему.Если да, поделитесь, пожалуйста, вашим решением.

...