Postgres-终止未提交的交易

时间:2019-12-16 21:59:19

标签: java postgresql transactions read-uncommitted

我已经阅读了几种方法来执行此操作(即,查询pg_stat_activity表以获取要杀死的pid),但是这些查询中没有返回数据。 在其他DBMS(例如MSSQL)中,我至少可以看到未提交的数据和/或使用探查器来查看哪些连接处于活动状态。使用postgres时,我只知道是这种情况,因为我正在运行一个Java应用程序,该应用程序有时会意外关闭,这会阻止该应用程序提交或回滚其更改。当我尝试运行该应用程序时,我看到未提交但仍以某种方式仍处于活动状态的重复键数据出现错误。我已经停止了postgres实例,但是再次打开它仍然遇到问题。有没有其他方法可以查看与我的数据库服务器挂起的连接并杀死它?

1 个答案:

答案 0 :(得分:0)

从未提交的值的重复键中获得唯一约束错误的唯一方法是,如果两个dups都插入了同一事务中。否则,第二个插入块的过程,直到第一个提交或回滚为止。

如果进程本身在轰炸,那么在pg_stat_activity中什么也看不到就不足为奇了。

相关问题