【发布时间】:2016-04-06 22:31:15
【问题描述】:
我收到错误:
SQL State: 25001
Error Code: 20000
Message: Cannot close a connection while a transaction is still active.
我理解这一点,因为当事务未提交或回滚时,我正在关闭数据库连接。
这应该很容易解决。但是,我使用的是连接池。所以我真的不确定这个连接在哪里未提交。我只是想优雅地关闭连接池中的每个连接。
在关闭事务之前总是调用 commit 是否安全?
if (!connection.isClosed())
{
connection.commit();
connection.close();
}
解决此问题的另一种方法是仔细检查每个数据库操作以确保已提交连接。这是一条安全的捷径吗?
【问题讨论】:
-
定义安全吗?
DELETE FROM USERS; commit; -
@Elliott Frisch 我假设所有操作都是有意的。但是,可能存在导致提交永远不会发生的异常。我不是 100% 为什么提交从未发生过。
-
我会更自在地盲目回滚,而不是盲目地提交。
-
你回滚上次数据库更新是什么。例如,添加用户。
-
它抛出了一个异常;所以大概没有正常工作
标签: java sql database connection database-connection