You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可通过psql命令行工具接入正在运行的事务?

针对同一运行中事务使用psql查询的实现方法

方案1:事务快照共享(无侵入推荐方案)

这个方案不会影响原有测试事务的运行,也不需要修改业务代码,仅能做查询操作:

  • 命中断点后,在调试器的当前数据库连接上下文执行SQL:SELECT pg_export_snapshot();,记录返回的快照ID,格式类似00000004-0000002F-1
  • 新开psql会话连接到同一个数据库,依次执行以下命令:
-- 开启可重复读隔离级别的事务
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 导入刚才拿到的事务快照
SET TRANSACTION SNAPSHOT '你记录的快照ID';
  • 此时在该psql会话中执行的所有查询,看到的数据和当前测试运行的未提交事务中的数据完全一致。

注意:原有测试事务提交/回滚后,导出的快照会立即失效,需要重新执行上述步骤才能获取新的事务数据。如果原有事务后续执行了新的写操作,需要重新导出快照并在psql中导入,才能看到最新的未提交修改。

方案2:直接在调试上下文执行SQL

如果不需要单独用psql,可以直接在调试器中调用当前数据库连接的执行方法,运行你需要的SQL语句直接获取结果,操作更简单不需要额外配置。

注意事项

  • 事务快照功能是PostgreSQL 9.2及以上版本内置功能,不需要安装额外扩展
  • 快照共享方式下的psql事务默认是只读的,不会修改原有事务的数据,也不会锁表影响原有测试流程

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:54:10