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

两个开启AUTOCOMMIT的PostgreSQL库执行commit仅一台提示无进行中事务

问题原因及排查方案

该差异由PostgreSQL服务端消息配置、DBeaver客户端连接配置两个维度的差异导致,对应控制项和排查方法如下:

核心控制配置

1. 服务端参数 client_min_messages

这个参数决定了PostgreSQL服务端会向客户端返回的最低消息级别,从低到高的优先级为:DEBUG5 < DEBUG4 < DEBUG3 < DEBUG2 < DEBUG1 < LOG < NOTICE < WARNING < ERROR

  • 「there is no transaction in progress」属于NOTICE级别的通知消息
  • 如果实例client_min_messages设置为NOTICE或更低级别,服务端会返回该提示;如果设置为WARNING及更高级别,该类通知会被直接过滤,不会发送给客户端
  • 查看当前参数值命令:SHOW client_min_messages;
  • 临时修改当前会话生效命令:SET client_min_messages = 'warning';
  • 永久生效需修改postgresql.conf中对应参数后执行SELECT pg_reload_conf();重载配置

2. DBeaver客户端连接配置

你在psql中通过\echo :AUTOCOMMIT查到的是psql客户端自身的自动提交配置,不代表DBeaver连接的事务配置,两个连接可能存在以下差异:

  • 连接级别的自动提交开关不一致:右键对应连接→「编辑连接」→「事务」页可查看,DBeaver的自动提交配置会覆盖数据库默认参数
  • 消息显示配置不一致:在DBeaver设置→「结果集」→「服务端输出」中,检查是否勾选了隐藏NOTICE级别的消息,不同连接的高级配置可能存在差异

验证方法

在返回提示的数据库连接的DBeaver查询窗口执行SET client_min_messages = 'warning';,再执行commit;,如果提示消失即可确认是服务端消息级别配置导致的差异。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:02