FATAL: система базы данных отключается при создании подключения к PostgreSQL

Я получаю FATAL: the database system is shutting down ошибку при создании соединений PostgreSQL JDBC с сервером PostgreSQL 9.2. Конкретный путь исключения, который я получаю от JDBC, находится здесь:

Caused by: org.postgresql.util.PSQLException: FATAL: the database system is shutting down
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:398)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:173)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:136)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
    at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
    at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:393)
    at org.postgresql.Driver.connect(Driver.java:267)

Из различных файлов журналов (из PostgreSQL, из нашего уровня управления, из приложения, использующего PostgreSQL), я не вижу фактического завершения работы базы данных (другие соединения создаются с PostgreSQL, как обычно, из нашего уровня управления не было инициировано завершение работы и т. Д. ), однако в журналах сервера PostgreSQL я вижу сообщение об ошибке с той же меткой времени:

2014-06-16 12:30:00.736 GMT LOG:  connection received: host=127.0.0.1 port=38530
2014-06-16 12:30:00.737 GMT FATAL:  the database system is shutting down

Изучая информацию в Интернете, я узнал, что это сообщение об ошибке используется всякий раз, когда PostgreSQL закрывает соединения.

Почему PostgreSQL отказался предоставить мне новое соединение? Может ли это быть вызвано какой-то конкуренцией за ресурсы? Как я могу получить дополнительную информацию об ошибке из самого PostgreSQL?


person Dan    schedule 27.06.2014    source источник
comment
Посмотрите дальше журнал сервера базы данных, чтобы узнать, почему он отключается. Вы использовали pg_ctl stop или что-то в этом роде?   -  person Craig Ringer    schedule 27.06.2014
comment
какой установленный порт PostgreSQL ???   -  person Vivek S.    schedule 27.06.2014


Ответы (3)


Эта проблема, как выяснилось, была вызвана очень плохим использованием PostgreSQL, когда наш сервер загрузил два экземпляра PostgreSQL в одном каталоге данных (он удалил postmaster.pid и использовал новый номер порта, поэтому обычные меры защиты от такого поведения были обойдены), что объясняет, почему журналы не содержали никакой полезной информации - они перезаписывались экземпляром PostgreSQL, который не отказывал в соединениях. Фактическая проблема была вызвана сложным взаимодействием между конкурирующими экземплярами PostgreSQL, и я надеюсь, что никто другой тоже не столкнется с этой проблемой!

person Dan    schedule 08.07.2014
comment
Какое решение помогло это исправить? - person Phil; 03.03.2020
comment
не могли бы вы предоставить решение здесь? - person Juhi Dhameliya; 18.12.2020
comment
В моем случае решение не состояло в запуске двух серверов PostgreSQL с одним и тем же набором файлов. Если вы не удалите файл postmaster.pid вручную или при этом будете более осторожны, чем мы, то PostgreSQL разработан таким образом, чтобы вы не могли этого сделать. - person Dan; 19.12.2020

Мы столкнулись с этой проблемой при перезапуске сервера. В этом случае перезагрузка не инициировала соединение с PostgreSql. Просто проверьте статус: «/etc/init.d/postgresql status», если ответ: «сервер не запущен», просто запустите: «/etc/init.d/postgresql start»

person Thyago César Souto    schedule 06.03.2019

Возможно, на жестком диске недостаточно места.

person Amir.S    schedule 21.07.2020