25004 — 分支事务隔离级别不适用(inappropriate_isolation_level_for_branch_transaction)
PostgreSQL SQLSTATE 25004:分支事务隔离级别不适用的源码边界与诊断参考。
25004 — 分支事务隔离级别不适用(inappropriate_isolation_level_for_branch_transaction)
速览
25004 表示分支事务使用了不适用的隔离级别。固定 PostgreSQL 18.6 核心解析调用扫描没有该码的直接报错组,因此不声称存在普通 SQL 复现。
| 字段 | 值 |
|---|---|
| SQLSTATE | 25004 |
| 条件名 | inappropriate_isolation_level_for_branch_transaction |
| 状态 | 有效 |
| 已知存在于 | 7.4 |
| 锁定快照 | 9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3 |
| 宏 | ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION |
| 别名 | — |
含义
这是分支事务条件,区别于 40001 可串行化失败,也区别于普通事务中 SET TRANSACTION ISOLATION LEVEL 的检查。
诊断
诊断时应同时保留分支 API、请求的隔离级别和事务状态。现有源码证据不足以借用其他隔离级别错误的报文。
处理
修正分支 API 的隔离级别协商后,只有 API 明确定义可重试时才重试。普通 SQL 会话应按实际返回的 SQLSTATE 诊断。
源码报文与运行边界
固定 errcodes.txt 定义了该条件和宏;raw/calls/REL_18_6.jsonl 的解析调用扫描没有直接报错组,因此本批不发布报文模板,也不构造自然 SQL 触发器。
适用边界与案例
本批运行器在 PostgreSQL 18.6 与 10.21 的选定 case 均为 not_applicable,只记录源码边界,没有可复制的 SQL 触发过程。结构化证据 · 案例导出
版本与边界
生成事实记录锁定的目录快照。两个 runner 目标都是 case 状态为 not_applicable 的源码边界观察,不把自然触发计入运行覆盖。
相关
25003 分支事务访问模式、40001 可串行化失败、25P01 没有活动 SQL 事务。
来源
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6—raw/calls/REL_18_6.jsonl(SHA-2569ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)