在我的应用程序日志中,我可以看到查询结果正在被迭代(使用 JDBC ResultSet,没什么特别的),并且实际上在表中的某些结果要么丢失,要么在结果集中出现得太晚(I'我不确定是哪个,因为如果发生这种情况,我经常会在结束之前遇到主键违规)。
我的查询是:
select t.* from myschema.vm t order by id;
但是,当我在 SQL Developer 中运行完全相同的查询时(数据库没有更改),我看不到这个问题发生,并且它只在我的应用程序中发生大约一半的时间(我怀疑它有时不会发生,因为由于所有插入和更新,表会发生变化)。
其他需要提及的关键点:
- 我正在使用另一个数据库连接进行更新、插入和可能删除,同时我正在迭代 ResultSet。不过,这应该没关系吧?
- 我正在使用 BoneCP 进行连接池。
- 数据库编码为 AL32UTF8。
为什么会这样?这让我疯狂!