我注意到我的应用程序中存在奇怪的行为。看起来提交后,提交的数据不可见。算法是这样的:Postgresql提交的数据不可见
connection1 - insert into table row with id = 5
connection1 - commit, close
connection2 - open
connection2 - select from table row with id = 5 (no results)
connection2 - insert into table row with id = 5 (PRIMARY KEY VIOLATION, result is in db)
如果选择在连接2回报没有结果的话,我就插入,否则更新。 服务器有许多数据库(〜200),它看起来像提交已完成,但更改后在数据库中。我使用java和jdbc。任何想法,将不胜感激。
如果连接2的当前事务在连接1的事务提交之前启动,它将无法看到更改 – 2013-04-05 09:34:20
连接1在连接1提交后打开。 – Neuro 2013-04-05 11:51:32
它真的是一个新鲜的连接,或者您正在使用连接池,如果连接池在逻辑连接上的close()后发生重置/清理,可能会出现错误行为。 – 2013-04-05 12:05:56