java - Postgres - 杀死未提交的事务
问题描述
我已经阅读了一些方法来做到这一点(即查询 pg_stat_activity 表以获取要杀死的 pid),但我没有在这些查询中返回数据。在 MSSQL 等其他 DBMS 中,我至少可以看到未提交的数据和/或使用分析器来查看哪些连接处于活动状态。使用 postgres,我只知道是这种情况,因为我正在运行一个 java 应用程序,它偶尔会意外关闭,这会阻止应用程序提交或回滚其更改。当我尝试运行该应用程序时,我看到未提交但仍以某种方式处于活动状态的重复键数据的错误。我已经停止了我的 postgres 实例,但是再次打开它后仍然遇到了问题。有没有另一种方法来查看与我的数据库服务器有挂起连接的任何东西并杀死它?
解决方案
从未提交值上的重复键中获取唯一约束错误的唯一方法是,如果两个 dup 都插入到同一个事务中。否则,第二个插入块的过程,直到第一个提交或回滚。
如果进程正在轰炸自己,那么在 pg_stat_activity 中没有什么可看的也就不足为奇了。
推荐阅读
- amazon-web-services - 使用 CDK 定义具有 Service Discovery 的 ECS Fargate 集群,无需负载均衡器
- c# - 为什么这个类引用不模棱两可?
- php - DB:SEED Laravel 6 不起作用
- javascript - Jquery Loop,条件和分配给变量?
- asp.net - 为什么当我单击下一步按钮时,表单没有转到下一页 asp.net MVC?
- algorithm - 和弦算法:前任究竟何时变为非零?
- java - 我试图理解 LazyInitializationException 和 @Transactional
- wix - 安装工具集和扩展后如何在 Visual Studio 2019 中找到 Windows Installer XML 节点?
- discord.js - 如何使用 ytdl-core 获取视频网址?
- python - 在python中以相同的方式随机播放两个数组