java - 同时连接到 HSQLDB - 调用永远不会返回

标签 java database hsqldb

我正在使用带有单个数据库和 4 个表的 HSQLDB。 我正在使用 commons apache 池数据源。

场景如下:

表 1-3 在一个事务中更新,因此在同一连接上(不同的 sql 语句)。他们使用自动提交 false 并调用executeUpdate() 和executeBatch()。在此事务结束时,有时(不是每次)都会调用“检查点”。

表 4 与其他表同时更新,但使用另一个连接。批量更新,然后始终调用“检查点”。在此检查点中,一切都挂起,调用永远不会返回,并且无法访问该数据库中的任何表。在日志文件中,我看到第四个表的“检查点”永远不会到达。

当存在使用 auto commit = false 的打开连接时,我是否无法执行检查点?

可能会陷入僵局吗?

我不知道问题出在哪里... 如果没有这个表#4,一切都可以正常工作。

最佳答案

当有其他打开的连接时,您可以执行 CHECKPOINT。执行 CHECKPOINT 的连接会等待所有其他连接提交,然后再锁定数据库并执行检查点。

因此,您必须在执行检查点之前完成所有操作并提交。

关于java - 同时连接到 HSQLDB - 调用永远不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503080/

相关文章:

java - Swing、Eclipse RCP 还是该走哪条路?

java - ListView 项目选择的背景改变了,它也改变了其他项目

java - 在运行时添加 JDBC jar 时,没有找到适合 HSQL 数据库的 JDBC 驱动程序?

java - Json 充满 "\"

java - 处理一个大文本文件需要多长时间?

Android SQLiteDatabase 被锁定

sql - 在 SQL 中对多个 SELECT 结果执行数学运算

php - PDO 获取最后插入的 ID

mysql - 如何将 mysql 转储加载到 hsqldb 数据库?

java - 每次DELETE后执行SQL语句