繁体   English   中英

Postgres - 杀死未提交的事务

[英]Postgres - killing uncommitted transaction

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

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

如果进程在自我轰炸,那么在 pg_stat_activity 中没有什么可看的也就不足为奇了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM