事务中的PostgreSQL 9.3空闲

事务中的PostgreSQL 9.3空闲,postgresql,jdbc,sqltransaction,Postgresql,Jdbc,Sqltransaction,在我们的产品中,有时会出现这样一种情况:数据库在事务中被空闲连接锁定 我正在使用postgresql-9.3(9.4),通过jdbc驱动程序进行java连接。 所有连接都设置为自动提交 只有使用选择pg\u terminate\u backend(PID)才能解决此问题。我不喜欢这样的决定,但这或重新启动服务是唯一的工作 因此,当我不手动操作事务时,有一个问题是如何解决这样的问题。所有到Postgres的连接都是本地的,所以我不认为这是一个网络问题 更新 好的,毫无疑问,这里有一个应用程序错误

在我们的产品中,有时会出现这样一种情况:数据库在事务中被
空闲连接锁定

我正在使用postgresql-9.3(9.4),通过jdbc驱动程序进行java连接。
所有连接都设置为自动提交

只有使用
选择pg\u terminate\u backend(PID)
才能解决此问题。我不喜欢这样的决定,但这或重新启动服务是唯一的工作

因此,当我不手动操作事务时,有一个问题是如何解决这样的问题。所有到Postgres的连接都是本地的,所以我不认为这是一个网络问题

更新 好的,毫无疑问,这里有一个应用程序错误

想象一下,我们有一个问题:

try(PreparedStatement statement=connection.prepareStatement("update table1 set some_field=1 where id=2")){
    statement.executeUpdate();
}
这是一个简单的本地连接查询。连接处于活动状态。自动提交是正确的。在事务
中,这种连接处于空闲状态时会出现什么问题

更新
谢谢大家的关注。通过将jdbc驱动程序更改为最新版本,问题得以解决。

事务中长时间处于空闲状态的事务是一个应用程序错误,但您可能已经意识到了这一点


解决此问题的一个权宜之计是将
idle\u in\u transaction\u session\u timeout
设置为非零值。此参数从9.6版开始提供,这为您提供了一个很快升级到最新版本的绝佳理由。

感谢大家的关注。通过将jdbc驱动程序更改为最新版本,问题得以解决。

Postgres 9.3和9.4将在几个月内不受支持。你应该尽快计划升级。应该有一个问题导致政府限制现在升级到更高版本这很荒谬(我知道这不是你的错)这些政府限制应该禁止使用过时的软件,不再接受任何安全修复(在德国,我们有一项针对某些基础设施的法律禁止这样做)。从9.3.25升级到11.5请不要在您的问题中添加解决方案。使用解决方案添加新答案并接受该答案,以将您的问题标记为已解决。回答您自己的问题并接受您自己的答案完全可以。