在创建到PostgreSQL的连接时出现“致命:数据库系统正在关闭”

xqk2d5yq  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(5)|浏览(271)

我在创建到PostgreSQL 9.2服务器的PostgreSQL JDBC连接时收到FATAL: the database system is shutting down错误。我从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本身获得有关错误的更多信息?

2ledvvac

2ledvvac1#

这个问题原来是由PostgreSQL的一个非常糟糕的误用引起的,我们的服务器在同一个数据目录上引导了两个PostgreSQL示例(它已经删除了postmaster.pid并使用了新的端口号,因此绕过了针对这种行为的正常保护措施),这就解释了为什么日志没有保存任何有用的信息--它们被没有拒绝连接的PostgreSQL示例覆盖了。实际的问题是由竞争的PostgreSQL示例之间的复杂交互引起的,我希望没有其他人也遇到这个问题!

wxclj1h5

wxclj1h52#

可能硬盘空间不足。

polkgigr

polkgigr3#

当服务器重新启动时,我们遇到了这个问题。在这种情况下,重新启动不会启动与PostgreSQL的连接。如果返回“no server running”just start:“/etc/init.d/postgresql start”,请检查状态:“/etc/init.d/postgresql status”

oo7oh9g9

oo7oh9g94#

解决方案:
1.第一个月
1.临时重命名锁文件:mv /tmp/.s.PGSQL.5432.lock /tmp/BK.s.PGSQL.5432.lockmv /tmp/.s.PGSQL.5432 /tmp/BK.s.PGSQL.5432

  1. brew install postgresql
    好好享受吧!
bejyjqdl

bejyjqdl5#

找到postgres进程的pid。

ps -ef | grep postgres | grep conf

字符串
杀死PID

kill -9 <pid>


这应该是清洁的开始。

相关问题