SQLSTATE
版本覆盖矩阵PostgreSQL 版本定义:18
英文手册覆盖始于 PostgreSQL 8.1. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
命令成功完成,不是错误条件。
类别 01 的通用警告,需结合实际严重级别判断。
集合函数计算时消除了 NULL 值的警告。
字符串数据被右截断的警告条件。
REVOKE 未撤销或未完全撤销权限的警告。
GRANT 未授予或未完全授予权限的警告。
位串被隐式补零填充的警告条件。
过程返回了动态结果集的警告条件。
使用已弃用功能的警告,如 MD5 密码。
无数据条件,不等同于查询返回零行。
没有更多动态结果集可返回。
SQL 语句尚未完整,解析未结束。
连接管理异常的通用条件,如 FDW 连接不可用。
无法建立到目标服务器的新连接。
指定名称的连接句柄在会话中不存在。
服务器拒绝建立 SQL 连接。
与服务器的连接在会话中途失败。
连接中断导致事务提交结果未知。
前后端消息违反线路协议,通常是 FATAL。
触发器动作异常,多见于 contrib/spi 触发器。
功能或选项在当前上下文中不被支持。
事务启动方式无效的标准类别条件。
定位器(locator)异常的类别条件。
定位器规格无效的标准条件。
授权者无效,见于旧 ACL 文本缺少 grantor。
GRANT 或 REVOKE 的权限类型对该对象无效。
角色规范无效,指定的角色不可用。
诊断相关异常的类别,具体见成员码。
在异常处理器外访问堆叠诊断状态。
XQuery/XPath 表达式参数无效,如路径为空。
PL/pgSQL 的 CASE 无匹配分支且缺少 ELSE。
结果行数违反基数契约,如标量子查询返回多行。
数据异常的通用类别,具体原因见成员码。
值超过目标类型长度而被右截断。
返回 NULL 但没有提供指示变量,见于 ECPG。
数值超出目标类型范围,如整数溢出。
参数或值不允许为 NULL。
赋值违反目标变量契约,如变量声明为 CONSTANT。
日期时间格式串无效,如 interval 格式错误。
日期或时间字段取值越界。
时区偏移量超出支持范围。
转义字符与其他字符冲突。
转义字符用法无效,如 SIMILAR TO 模式错误。
转义八位组无效的数据异常条件。
操作拒绝了零长度字符串。
无法确定值的最具体类型,类型不匹配。
nextval 触及序列的最大值或最小值。
输入不满足 XML DOCUMENT 形式要求。
XML 文档解析失败,文档无效。
XML 内容无效,未通过 CONTENT 模式解析。
XML 注释无效,含 -- 或以 - 结尾。
XML 处理指令无效,目标名或内容非法。
指示参数取值不符合规则。
substring 长度参数为负等取子串错误。
除法或取模运算遇到零除数。
窗口帧的 PRECEDING/FOLLOWING 偏移为负。
ntile 的桶数量必须大于零。
interval 输入字段超出可接受范围。
nth_value 的序号必须大于零。
字符值无法通过所要求的类型转换。
操作拒绝了给定的转义字符。
正则表达式无效,编译或执行阶段被拒绝。
对数函数参数为零或负数。
幂运算参数使实数结果无定义。
width_bucket 参数无效,如桶数非正。
LIMIT 行数无效,不能为负。
OFFSET 行数无效,不能为负。
字节序列对目标编码无效。
指示变量容纳不下接口返回的结果。
参数或选项取值超出允许范围。
C 风格字符串缺少终止符。
转义序列无效,如 ESCAPE 参数非单字符。
位串长度与声明的类型长度不一致。
trim 操作的参数或裁剪规格无效。
数组下标或维度错误,如拼接维度不兼容。
TABLESAMPLE 的 REPEATABLE 种子不能为空。
TABLESAMPLE 方法收到越界的采样参数。
构造 JSON 对象时出现重复键。
SQL/JSON datetime 方法的参数或格式无效。
JSON 文本无效,无法被消费方解析。
SQL/JSON 数组下标无效,如越界或非数值。
SQL/JSON 结果多于一项,需要单项。
指定 SQL/JSON path 没有找到任何项。
JSON 路径项方法收到非数值的项。
JSON 对象中的键不唯一。
SQL/JSON 路径要求单一指定类型的结果。
JSON 路径访问器要求数组却收到非数组项。
JSON 对象成员不存在或当前项不是对象。
jsonpath 一元运算收到非数值的项。
JSON 路径访问器要求对象却收到非对象项。
JSON 数组元素数量过多。
JSON 对象成员数量过多。
JSON_VALUE 要求标量,收到的项不是标量。
SQL/JSON 项无法转换为目标类型。
浮点异常,进程收到 SIGFPE 信号。
文本无法解析为目标类型,如整数输入非法。
二进制数据格式无效,如 Bind 参数或二进制 COPY。
COPY 文件结构错误,如字段数或头部不符。
字符在目标编码中没有对应表示。
字符串字面量中反斜杠转义用法非标准。
完整性约束冲突的类别码,应使用具体子码。
外键 RESTRICT 动作拒绝删除仍被引用的父行。
向 NOT NULL 列写入了 NULL 值。
外键约束冲突,子行找不到匹配的父键。
行或索引违反唯一约束,常见于重复键插入。
CHECK 约束计算为假,写入的行不满足条件。
排除约束发现新行与已有行冲突,如范围重叠。
游标或 portal 状态不满足当前操作要求。
事务状态无效的类别码,多见于内部状态检查。
命令不能在活动事务块中执行,如 VACUUM。
分支事务已经活动,范围窄于 25001。
分支事务使用了不适用的访问模式。
分支事务使用了不适用的隔离级别。
分支事务缺少活动的 SQL 事务。
命令试图在只读事务中写入数据。
事务中不支持混合模式语句与数据语句。
持有游标要求与操作相同的事务隔离级别。
操作需要活动事务块,如自动提交下的 SAVEPOINT。
事务已失败,后续语句被拒绝直到 ROLLBACK。
会话在开放事务中空闲超时,被服务器终止。
事务运行超过 transaction_timeout 被终止。
会话中不存在该名称的预备语句。
触发器操作重复修改了当前命令已改动的行。
授权规范无效,如登录角色不存在或 HBA 拒绝。
建立会话时密码认证失败,连接被拒绝。
仍存在依赖的权限描述符,对象依赖见 2BP01。
DROP 的对象仍被其他数据库对象依赖。
在过程或子事务上下文中无效地终止事务。
SQL 例程异常的类别码,需按具体子码诊断。
例程的数据访问契约不允许修改 SQL 数据。
例程中尝试执行被禁止的 SQL 语句,见于 dblink。
例程的数据访问契约不允许读取 SQL 数据。
函数执行结束时没有执行 RETURN 语句。
会话中无法解析该游标或 portal 名称。
外部例程异常的类别码,覆盖外部命令与 PL 处理器。
外部例程不允许包含 SQL 语句。
外部例程不允许修改 SQL 数据,区别于 2F002。
外部例程中尝试执行被禁止的 SQL 语句。
外部例程不允许读取 SQL 数据。
外部例程调用异常,如 pgcrypto 的库失败。
外部例程返回了无效的 SQLSTATE。
外部例程调用中不允许出现 NULL 值。
触发器违反了返回值或调用协议。
集合返回函数违反了 SRF 调用协议。
事件触发器辅助函数在错误的事件上下文调用。
保存点异常的类别码,具体失败见 3B001。
引用了当前事务中不存在的保存点。
数据库名称无法解析,常见于连接不存在的库。
无法解析指定的 schema 名称,该模式不存在。
事务回滚的类别码,具体原因见 40001 等子码。
并发事务无法串行化,需回滚后重试。
事务级完整性约束违规的总括码,核心不直接使用。
语句完成状态不确定,重试前先核对业务状态。
检测到死锁,事务因等待环被选为受害者中止。
语法错误或访问规则违反的总类,见具体子码。
当前角色对目标对象的权限不足。
SQL 语句存在语法错误,解析器拒绝执行。
名称不合法,如 enum 标签超出长度限制。
列定义无效,如继承的父表默认值冲突。
标识符或 name 值超出长度上限。
同一定义中重复指定了同名列。
列引用有歧义,多个表都有该列名。
引用的列在目标关系中不存在。
引用的数据库对象不存在,如触发器或类型。
要定义的对象名已被占用,如重复 CREATE TYPE。
同一查询命名空间中重复使用了表别名。
同一模式下已存在同名同参数类型的函数。
函数调用有多个候选,无法选出最佳匹配。
分组查询输出了既未分组也未聚合的列。
表达式类型与目标上下文要求的类型不符。
命令本身有效,但不能作用于该类对象。
外键在被引用列上找不到合格的唯一键。
源类型到目标类型之间没有可用的 cast。
按名称和参数类型找不到匹配的函数或操作符。
向身份列或生成列赋值,这类列只接受 DEFAULT。
对象名使用了保留名称,如模式或表空间。
引用的表、视图或其他关系不存在。
查询引用了解析器未知的位置参数,如 $1。
游标或 portal 名称与已有的冲突。
集群中已存在同名数据库。
当前会话已有同名的服务端预备语句。
要创建的模式名在当前数据库中已存在。
关系名已存在,或继承父项重复。
参数存在但无法推导出一致而具体的类型。
一个表引用对应多个关系命名空间项。
列引用不符合该操作的契约,如 COPY 生成列。
游标声明违反定义阶段规则,如 SCROLL 选项冲突。
数据库定义无效,核心源码中未见触发路径。
函数、聚合或触发器声明在校验阶段失败。
PREPARE 定义预备语句时失败。
CREATE SCHEMA 的模式声明不一致被拒绝。
表定义无效,如分区键或主键规则冲突。
对象定义无效,如继承、生成列或规则冲突。
无法推断表达式或参数的数据类型。
递归查询结构不合法,执行前被检查拒绝。
窗口函数调用或框架边界定义不合法。
参与运算的排序规则不兼容,产生冲突。
操作需要唯一排序规则,但无法确定。
通过视图写入的行不满足 WITH CHECK OPTION。
服务器资源不足的宽泛条件,需看消息定位资源。
写文件时发生短写,通常是磁盘空间耗尽。
内存分配失败,涵盖会话内存与共享内存不足。
连接数达到角色、库或服务器上限,新连接被拒。
配置上限或进程槽位耗尽,如后台 worker 槽位。
超出程序固定上限,如数组维度或分配大小。
语句过于复杂,超出 grouping set 或栈深度上限。
对象定义的列数超过上限,如表属性或索引键。
函数或过程的参数个数超过编译时上限。
对象或服务器未处于操作所需的前置状态。
对象正被使用,操作与进行中的占用冲突。
当前上下文或阶段不允许修改该运行时参数。
当前等待策略下取不到锁,含 lock_timeout 到期。
同一事务中使用了尚未提交的新增 enum 值。
运维干预类别的通用条件,核心未见直接调用。
语句被取消,含 statement_timeout 到期。
管理员关闭服务器或终止后端,会话被断开。
postmaster 因崩溃重启而令后端回滚退出。
服务器处于启动或恢复中,暂不接受连接。
所连数据库被删除,恢复冲突终止了会话。
空闲会话超过 idle_session_timeout 被终止。
外部系统调用失败,如发送信号返回错误。
文件读写发生 I/O 错误,如缓冲区写回失败。
所需的文件或目录不存在,如表空间路径缺失。
目标文件或目录已存在且非空,无法创建。
文件访问因路径名过长失败,对应 ENAMETOOLONG。
配置文件内容或读取有误,严重性随调用者而异。
数据目录的锁文件已存在,实例可能已在运行。
外部数据包装器的通用错误,需看包装器诊断。
包装器分配内存失败,如获取 libpq 默认选项时。
包装器缺少必需的参数值,如未给 filename。
包装器无法使用该数据类型,类型映射不匹配。
包装器在远端或描述符中找不到该外部列名。
包装器的数据类型描述符不一致或不可用。
传给包装器的列名无效,不符合命名规则。
包装器描述符收到超出范围的列序号。
包装器边界上非法使用了空指针。
包装器无法接受该字符串的格式。
包装器收到未知、已关闭或无效的句柄。
包装器处理自身选项数组时收到无效索引。
当前上下文不接受该外部数据包装器选项名。
dblink 连接选项不在接受的选项集合中。
包装器读取回复时收到无效的回复句柄。
包装器准备执行时无法创建执行对象。
包装器无法创建存放结果的回复对象。
包装器无法与外部数据源建立连接。
包装器不支持 IMPORT FOREIGN SCHEMA 导入。
IMPORT FOREIGN SCHEMA 找不到请求的远端模式。
包装器在外部数据源中找不到请求的表。
包装器的函数被以无效的顺序调用。
包装器的句柄数量达到上限。
包装器描述符中的信息互相不一致。
包装器拒绝了某个属性值,取值无效。
包装器边界的字符串或缓冲区长度无效。
包装器无法使用该描述符字段标识符。
PL/pgSQL 错误的类别项,核心未见直接调用。
RAISE EXCEPTION 未指定条件名或代码时的默认码。
PL/pgSQL 中查询未取到所需的数据行。
PL/pgSQL 中查询返回的行数多于预期。
PL/pgSQL 的 ASSERT 断言条件不成立。
内部错误,也是未显式指定代码的 ERROR 默认码。
数据完整性不变量失败,如 TOAST 数据损坏。
索引结构失败,如页面头部或元数据不合法。