# 0B000 — invalid_transaction_initiation

> PostgreSQL SQLSTATE 0B000 的源码边界与诊断参考。
---

# 0B000

## 速览 {#at-a-glance}

SQLSTATE 0B000 是 SQL 标准的 Invalid Transaction Initiation 类别。锁定的 PostgreSQL 18.6 定义包含该条件，但已解析的 core/contrib 调用扫描没有找到报告此代码的 PostgreSQL 调用组。应把它当作身份和调查入口，而不是某个 `BEGIN`、保存点或客户端命令必然产生它的证明。

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `0B000` |
| 条件名 | `invalid_transaction_initiation` |
| 状态 | `有效` |
| 已知存在于 | `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_INVALID_TRANSACTION_INITIATION` |
| 别名 | `—` |

<!-- source facts: data/errcodes/0B000.json -->
<!-- END SQLSTATE FACTS -->

## 含义 {#meaning}

该类别描述使用此 SQLSTATE 的实现以无效方式启动或建立事务。它与服务器实际返回的事务状态代码是两回事。PostgreSQL 的目录条目本身不能证明当前后端路径、扩展、ECPG 层或驱动会为某个命令使用 0B000。

## 消息 {#messages}

由于有界扫描没有解析出原生报告调用，本页不采用未经确认的 PostgreSQL 固定消息变体。

## 诊断 {#diagnosis}

在解释名称前记录准确的 SQLSTATE、消息类型、严重性、命令阶段和客户端库。确认失败发生在启动、显式事务命令、保存点操作，还是转发远端结果的包装层。如果实际代码是 `25001` 或其他事务状态代码，就按该代码及其服务器消息诊断，不要从类别名称替换成 0B000。

## 处理 {#response}

按实际事务状态诊断处理：结束或修正无效的事务命令，并且只有在服务器和应用状态确实要求时才开启新事务。若路径由包装器或驱动负责，应先检查其固定实现及远端 SQLSTATE，再改变事务处理方式。有界源码结果不足以为 0B000 提供通用重试或 PostgreSQL 原生修复步骤。

## 版本 {#versions}

锁定目录将该条件的已知下界记为 PostgreSQL 7.4。事实块列出已发布快照；源码路径状态仅限于下方固定的 PostgreSQL 18.6 资料。

## 相关 {#related}

[`25001`](../25001/), [`25P02`](../25p02/)

## 来源 {#sources}

固定的[errcodes 定义](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L123)确认目录条目；[事务管理文档](https://www.postgresql.org/docs/18/tutorial-transactions.html)说明 PostgreSQL 的事务边界。锁定的 core/contrib 调用扫描未找到已解析的 0B000 报告调用组。 详见结构化[证据记录](../../data/evidence/0b000.json)，其中记录固定源码路径、扫描范围和未解决的运行边界。
