【发布时间】:2013-06-04 19:36:33
【问题描述】:
我正在使用 postgres 9.1、org.apache.commons.dbcp.BasicDataSource(用于我的连接池)和 Java 1.7。当我重新启动我的 postgres 服务器时,我得到了像 org.postgresql.util.PSQLException: FATAL: terminating connection due to administrator command 这样的异常。
如何使连接自动重新连接到重新启动的数据库?
【问题讨论】:
-
使用
try-catch捕获异常(检查e.getMessage()是否实际上是服务器重新启动),然后从catch语句或其他代码块中重新连接到数据库由它触发。 -
@Vulcan 不要不检查错误信息;使用您可以从
PSQLException获取的SQLSTATE来检查问题的原因。否则,当消息在新版本中改写或有人以不同的语言运行 Pg 时,您会遇到有趣的问题。 -
@CraigRinger 好点。我不知道
PSQLException有这样一个字段(我以前从未使用过 PSQL)。绝对应该使用它而不是消息,你是对的。 -
@Vulcan
getSQLState()是一种 SQLException 方法,是所有数据库的标准方法。 从不 解析错误消息 - 对于任何数据库,而不仅仅是 Pg。这就是 SQLState 的用途。消息类也相当标准。 -
@CraigRinger 啊,我的错。我过去只简单地使用过 JDBC。在任何情况下我都不会解析异常消息,但我不知道
getSQLState()。谢谢。
标签: java postgresql jdbc apache-commons-dbcp