↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / SQL 状态码 / Class 25 无效的事务状态

25008 held_cursor_requires_same_isolation_level

持有游标要求相同隔离级别

ERROR 仅定义 参考 不适用

类别
Class 25 无效的事务状态
严重等级
ERROR
条件名
held_cursor_requires_same_isolation_level
宏名称
ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL
最早已知存在
7.4
状态
有效

版本覆盖

版本条依据已采样构建显示;灰色版本可能尚未采样,悬停可查看。手册链接随版本选择,源码和运行证据保持原核验构建。

速览

25008 用于持有游标与操作要求的事务隔离级别不兼容的情况。固定 PostgreSQL 18.6 核心扫描没有该码的直接报错组。

含义

它比 24000 游标状态无效更窄,也不是一般的 40001 可串行化重试路径。游标跨事务持有本身不能证明服务器发出了 25008。

诊断

应记录游标声明、holdability、两个事务的隔离级别以及实际报出的精确 SQLSTATE。当前固定证据没有报文模板或可复制 SQL 触发器。

处理

让持有游标和使用它的事务保持兼容隔离级别,或按 API 契约关闭并重新声明。没有实际状态证据时,不要套用 24000 修复或通用回滚。

可复现案例

在一次性实例上执行过的场景。

held_cursor_isolation_boundary PG 10 / 18

前置条件

  • A runner-owned disposable target is provisioned.

触发

Source/definition evidence only; no natural SQL trigger is claimed.

断言

  • No fabricated SQL trigger is included; the selected run records a definition/source boundary.

处置

Follow the explicit transaction or source boundary described by the case.

清理

Drop the case schema with an owner connection.

源码报文与运行边界

固定 errcodes.txt 定义了该条件和宏;raw/calls/REL_18_6.jsonl 的解析调用扫描没有直接报错组,因此本批不发布报文模板,也不构造自然 SQL 触发器。

适用边界与案例

本批运行器在 PostgreSQL 18.6 与 10.21 的选定 case 均为 not_applicable,只记录源码边界,没有可复制的 SQL 触发过程。结构化证据 · 案例导出

版本与边界

生成事实记录锁定目录成员。选定的 latest 与 PG10 case 有意保持仅源码和 not_applicable 状态。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

  • 25008 is held_cursor_requires_same_isolation_level in Class 25.

    核实方式Read the fixed condition row and macro.

    不覆盖The condition is about a held cursor and transaction isolation, not every cursor-state error.

    来源 来源:src/backend/utils/errcodes.txt @ REL_18_6

  • The exhaustive resolved PostgreSQL 18.6 call scan contains no direct 25008 report group; no natural SQL reproduction or message template is claimed.

    核实方式Scan fixed source call records for SQLSTATE 25008.

    不覆盖Do not replace this boundary with 24000 or a fabricated cursor error.

    来源 来源:raw/calls/REL_18_6.jsonl

运行记录

目标服务器版本结果覆盖案例
latest 18.6 (Homebrew) not_applicable 案例:held_cursor_isolation_boundary
pg10 10.21 (Debian 10.21-1.pgdg90+1) not_applicable 案例:held_cursor_isolation_boundary

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 25 无效的事务状态 Invalid Transaction State 13 个 ↗
25000 invalid_transaction_state ERRCODE_INVALID_TRANSACTION_STATE ERROR 7.4 起已知
事务状态无效的类别码,多见于内部状态检查。 有效
25001 active_sql_transaction ERRCODE_ACTIVE_SQL_TRANSACTION ERROR 7.4 起已知
命令不能在活动事务块中执行,如 VACUUM。 有效
25002 branch_transaction_already_active ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE ERROR 7.4 起已知
分支事务已经活动,范围窄于 25001。 有效
25003 inappropriate_access_mode_for_branch_transaction ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ERROR 7.4 起已知
分支事务使用了不适用的访问模式。 有效
25004 inappropriate_isolation_level_for_branch_transaction ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ERROR 7.4 起已知
分支事务使用了不适用的隔离级别。 有效
25005 no_active_sql_transaction_for_branch_transaction ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION ERROR 7.4 起已知
分支事务缺少活动的 SQL 事务。 有效
25006 read_only_sql_transaction ERRCODE_READ_ONLY_SQL_TRANSACTION ERROR 7.4 起已知
命令试图在只读事务中写入数据。 有效
25007 schema_and_data_statement_mixing_not_supported ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED ERROR 7.4 起已知
事务中不支持混合模式语句与数据语句。 有效
25008 held_cursor_requires_same_isolation_level ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL ERROR 7.4 起已知
持有游标要求与操作相同的事务隔离级别。 有效
25P01 no_active_sql_transaction ERRCODE_NO_ACTIVE_SQL_TRANSACTION ERROR 7.4 起已知
操作需要活动事务块,如自动提交下的 SAVEPOINT。 有效
25P02 in_failed_sql_transaction ERRCODE_IN_FAILED_SQL_TRANSACTION ERROR 7.4 起已知
事务已失败,后续语句被拒绝直到 ROLLBACK。 有效
25P03 idle_in_transaction_session_timeout ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT ERROR 9.6.0 起已知
会话在开放事务中空闲超时,被服务器终止。 有效
25P04 transaction_timeout ERRCODE_TRANSACTION_TIMEOUT ERROR 17.0 起已知
事务运行超过 transaction_timeout 被终止。 有效