SQLSTATE 错误代码

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 12.2 及更高版本

Azure Databricks 返回的所有错误类都与一个 5 字符 SQLSTATE 相关联。 SQLSTATEJDBCODBC 和其他客户端 API 常用的错误条件的 SQL 标准编码。

SQLSTATE 由两个部分组成:双字符类和三字符子类。 每个字符必须是数字 '0''9',或字母 'A''Z'

虽然许多 SQLSTATE 值是由 SQL 标准规定的,但有些值在行业中很常用且特定于 Spark 或 Azure Databricks。

如有必要,Spark 和 Azure Databricks 将 'KD' 类和 'K**' 子类范围用于自定义 SQLSTATE。 类 'XX' 用于可保证 bug 报告的内部错误。

有关错误类的已排序列表,请参阅:Azure Databricks 中的错误处理

Azure Databricks 使用以下 SQLSTATE 类:

07:动态 SQL 错误

SQLSTATE 说明和生成错误条件
07001 using 子句与动态参数规范不匹配
07501 在 PREPARE 或 EXECUTE 上指定的选项无效。

08:连接异常

SQLSTATE 说明和生成错误条件
08000 连接异常
08001 SQL 客户端无法建立 SQL 连接
08003 连接不存在
08004 SQL 服务器拒绝建立 SQL 连接
08006 连接失败
08KD1 服务器忙

0A:功能不受支持

SQLSTATE 说明和生成错误条件
0A000 功能不受支持
0A001 多个服务器交易
0AKD0 不支持跨目录或架构操作
0AKD1 不支持安全功能
0AKDC 在 Delta 中不受支持
0AKDD 功能需要 Delta
0AKDE 未为此 Delta 表启用功能
0AKLT Delta Live 中未启用的功能
0AKUC 在 Unity Catalog 中不受支持
0AKUD 功能需要 Unity Catalog

0B:无效的事务启动

SQLSTATE 说明和生成错误条件
0B000 无效的事务启动

0K:处理程序未处于活动状态时辞职

SQLSTATE 说明和生成错误条件
0K000 处理程序未处于活动状态时辞职

0N:SQL/XML 映射错误

SQLSTATE 说明和生成错误条件
0N000 SQL/XML 映射错误

21:基数冲突

SQLSTATE 说明和生成错误条件
21000 基数冲突
21506 表的同一行不能是多个更新、删除或插入操作的目标。
21S01 插入值列表与列列表不匹配

22:数据异常

SQLSTATE 说明和生成错误条件
22000 数据异常
22001 字符串数据,右截断
22003 数值超出范围
22004 不允许为 null 值
22005 分配错误
22006 无效的间隔格式
22007 无效的日期/时间格式
22008 日期/时间字段溢出
22009 无效时区置换值
2200E 数组目标中包含 null 值
2200G 最具体类型不匹配
2200P 间隔值超出范围
22010 无效指示器参数值
22012 被零除
22015 间隔字段溢出
22018 要强制转换的字符值无效
2201B 无效的正则表达式
2201E 自然对数的无效参数
22022 指示器溢出
22023 无效的参数值
22024 未终止的 C 字符串
22029 UCS 字符串中的非字符
22032 无效的 JSON 文本
2203G sql json 项无法强制转换为目标类型
22525 分区键值无效。
22531 内置或系统提供的例程的参数导致错误。
22546 例程参数的值无效。
22KD0 暂时性错误
22KD1 无效的 URI 或路径
22KD2 未设置标识声明
22KD3 无法将源类型演化为目标类型。
22P02 文本表示形式无效
22P03 二进制表示形式无效

23:完整性约束冲突

SQLSTATE 说明和生成错误条件
23001 限制冲突
23502 插入或更新值为 null,但列不能包含 null 值。
23505 唯一索引或唯一约束施加的约束发生冲突。
23512 无法添加检查约束,因为表包含不满足约束定义的行。
23K01 MERGE 基数冲突

25:无效的事务状态

SQLSTATE 说明和生成错误条件
25000 无效的事务状态

28:授权规范无效

SQLSTATE 说明和生成错误条件
28000 授权规范无效

2B:依赖特权描述符仍然存在

SQLSTATE 说明和生成错误条件
2BP01 依赖对象仍然存在

2D:无效的事务终止

SQLSTATE 说明和生成错误条件
2D521 SQL COMMIT 或 ROLLBACK 在当前操作环境中无效。
2DKD0 提交后挂钩失败。

35:无效的条件编号

SQLSTATE 说明和生成错误条件
35000 无效条件编号

38:外部例程异常

SQLSTATE 说明和生成错误条件
38000 外部例程异常

39:外部例程调用异常

SQLSTATE 说明和生成错误条件
39000 外部例程调用异常

3D:无效的目录名称

SQLSTATE 说明和生成错误条件
3D000 无效的目录名称

3F:架构名称无效

SQLSTATE 说明和生成错误条件
3F000 无效的架构名称

40:事务回滚

SQLSTATE 说明和生成错误条件
40000 事务回滚 (transaction rollback)

42:语法错误或访问规则冲突

SQLSTATE 说明和生成错误条件
42000 语法错误或访问规则冲突
42001 编码器错误无效
42501 授权 ID 无权对标识的对象执行指定的操作。
42505 连接授权失败。
42601 字符、标记或子句无效或缺失。
42602 已检测到名称中无效的字符。
42604 检测到无效的数字或字符串常数。
42605 为标量函数指定的参数数目无效。
42607 聚合函数或 CONCAT 运算符的操作数无效。
42608 在 VALUES 或赋值语句中使用 NULL 或 DEFAULT 无效。
42611 列、自变量、参数或全局变量定义无效。
42612 语句字符串是一个 SQL 语句,在呈现该语句的上下文中不可接受。
42613 子句互斥。
42614 重复的关键字或子句无效。
42616 指定的选项无效
42617 语句字符串为空。
42621 检查约束或生成的列表达式无效。
42623 不能指定 DEFAULT 子句。
42701 在同一 SQL 语句中多次指定同一目标进行赋值。
42702 由于名称重复,列引用不明确。
42703 检测到未定义的列或参数名称。
42704 检测到未定义的对象或限制名称。
42710 检测到重复的对象或约束名称。
42711 对象定义或 ALTER TABLE 语句中检测到重复的列名。
42713 在列表中检测到重复对象或与现有对象相同。
42723 具有相同签名的例程已存在于定义该例程的架构、模块或复合块中。
42734 检测到重复的参数名称、SQL 变量名、标签或条件名称。
4274K 调用例程时使用的命名参数无效。
42802 目标值的数目与源值的数目不同。
42803 SELECT 或 HAVING 子句中的列引用无效,因为它不是分组列;或 GROUP BY 子句中的列引用无效。
42804 CASE 表达式中的结果表达式不兼容。
42805 ORDER BY 子句中的整数不标识结果表的列。
42806 无法为变量赋值,因为数据类型不兼容。
42807 此对象不允许使用数据更改语句。
42808 在 INSERT 或 UPDATE 操作中标识的列不可更新。
42809 标识的对象不是该语句适用的对象类型。
42815 数据类型、长度、刻度、值或 CCSID 无效。
42816 表达式中的日期/时间值或持续时间无效。
42818 运算符或函数的操作数不兼容或不可比较。
42822 ORDER BY 子句或 GROUP BY 子句中的表达式无效。
42823 从只允许一个列的子查询返回了多个列。
42825 UNION、INTERSECT、EXCEPT 或 VALUES 的行没有兼容的列。
42826 UNION、INTERSECT、EXCEPT 或 VALUES 的行数不相同。
42830 外键不符合父键的描述。
42832 不允许对系统对象执行该操作。
42836 递归命名派生表的规范无效。
42837 无法更改该列,因为它的属性与当前列属性不兼容。
42845 检测到 NOT DETERMINISTIC 或 EXTERNAL ACTION 函数的无效用法。
42846 不支持从源类型强制转换为目标类型。
42852 在 GRANT 或 REVOKE 中指定的特权无效或不一致。 (例如,对视图运行 GRANT ALTER。)
42883 找不到具有匹配签名的例程。
42887 函数或表引用在其上下文中无效。
42891 已存在重复约束。
42893 对象或约束无法删除、修改、转移或撤销权限,因为其他对象依赖于该对象。
428B3 指定了无效的 SQLSTATE。
428C4 谓词运算符两边的元素数目不同。
  • UNPIVOT 值大小不匹配
428EK 架构限定符无效。
428FR 无法按指定更改列。
428FT 在 CREATE 或 ALTER 中指定的分区子句无效。
428GU 表必须至少包含一个未隐式隐藏的列。
428H2 数据类型在其使用上下文中不受支持。
428HD 无法处理语句,因为无法应用列掩码,或者掩码的定义与语句冲突。
42902 FROM 子句中还标识了 INSERT、UPDATE 或 DELETE 的对象(可能通过视图隐式标识)。
42903 聚合函数或 OLAP 函数的用法无效。
42908 语句不包含必需的列列表。
42939 不能使用该名称,因为指定的标识符保留给系统使用。
42996 不能在分区键中使用指定的列。
429BB 不支持列、参数或 SQL 变量的数据类型。
429BQ 不允许指定的数据类型或属性更改。
42K01 未完全指定数据类型
42K02 找不到数据源
42K03 找不到文件
42K04 重复文件
42K05 名称无效
42K06 选项的类型无效
42K07 不是有效的架构文本
42K08 不是常数
42K09 数据类型不匹配
42K0A 无效的 UNPIVOT 子句
42K0B 已阻止旧功能
  • 版本间行为不一致
42K0C 对约束的引用不明确
42K0D lambda 函数无效
42K0E 表达式在使用它的上下文中无效
42K0F 持久化对象不能引用临时对象。
42K0G protobuf 无效
42K0H 检测到循环调用。
42K0I 找不到 SQL 配置。
42K0K 逆分布函数无效
42K0L 标签的使用无效。
42K0M 变量声明无效。
42K0N 外部类型无效。
42K0O ScalarFunction 不重写使用自定义实现的“produceResult(InternalRow)”方法。
42K0P ScalarFunction 没有实现或覆盖方法“produceResult(InternalRow)”。
42K0Q 处理程序声明无效。
42K0R 条件声明无效。
42K10 动态选项无效。
42KD0 名称引用不明确。
42KD1 操作在 READ ONLY 会话模式下不受支持。
42KD2 SYNC 操作实例的源和目标表名必须相同。
42KD3 无法根据指定添加列。
42KD4 操作不受支持,因为表架构已更改。
42KD5 无法创建文件或路径。
42KD6 找不到分区信息。
42KD7 表签名不匹配。
42KD8 列位置超出范围。
42KD9 无法推理表架构。
42KDA 无法将文件合并到表架构中。
42KDB 无效的 URL
42KDC 存档文件引用。
42KDD 流式处理视图中不支持的操作。
42KDE 流式处理数据集上不支持的操作。
42KDF 必需的例程参数缺少参数。
42KDG 目标架构与引入的数据不兼容。
42KDH 筛选服务的源无效。
42P01 表未定义
42P02 参数未定义
42P06 架构重复
42P07 表重复
42P08 不明确的参数
42P10 列引用无效
42P18 数据类型不确定
42P20 窗口化错误
42P21 排序规则不匹配
42P22 不确定的排序规则
42S22 找不到列
42S23 分区转换表达式不在“partitionedBy”中
  • 分区转换表达式不在分区中

44:发生检查选项冲突

SQLSTATE 说明和生成错误条件
44000 发生检查选项冲突

46:Java DDL 1

SQLSTATE 说明和生成错误条件
46103 未解析的类名
46110 不支持的功能
46121 列名称无效

51:应用程序状态无效

SQLSTATE 说明和生成错误条件
51000 应用程序状态无效
51024 不能使用对象,因为它已被标记为无效。

53:资源不足

SQLSTATE 说明和生成错误条件
53000 资源不足
53200 内存不足

54:超出程序限制

SQLSTATE 说明和生成错误条件
54000 超出程序限制
54001 语句太长或太复杂。
54006 结果字符串太长。
54011 为表、视图或表函数指定了太多列。
54023 参数太多
54K00 已超出嵌套视图的最大深度。
54KD0 超出了查询计划中的最大 UDF 计数。
54KD1 超过会话中的最大对象数。

55:对象不处于先决条件状态

SQLSTATE 说明和生成错误条件
55000 对象未处于先决条件状态
55019 该对象处于无效状态,不可用于操作。

56:其他 SQL 或产品错误

SQLSTATE 说明和生成错误条件
56000 其他 SQL 或产品错误
56038 此环境不支持请求的功能。
56098 在隐式重新绑定、重新编译或重新验证期间出错。
56K00 Spark Connect 错误

57:操作员干预

SQLSTATE 说明和生成错误条件
57000 操作员干预
57012 非数据库资源不可用。 这不会影响后续语句的成功执行。
57KD0 查询执行超时

58:系统错误

SQLSTATE 说明和生成错误条件
58000 系统错误
58030 I/O 错误

82:内存不足

SQLSTATE 说明和生成错误条件
82001 没有足够的内存用于聚合
82002 内存不足,无法增长指针数组
82003 调用spill()时出错
82100 内存不足(无法分配)

F0:配置文件错误

SQLSTATE 说明和生成错误条件
F0000 配置文件错误

HV:特定于 FDW 的条件

SQLSTATE 说明和生成错误条件
HV000 特定于 FDW 的条件
HV091 无效的描述符字段标识符

HY:特定于 CLI 的条件

SQLSTATE 说明和生成错误条件
HY000 特定于 CLI 的条件
HY008 操作已取消
HY109 无效的游标位置

KD:特定于数据源的错误

SQLSTATE 说明和生成错误条件
KD000 特定于数据源的错误
KD001 无法读取文件页脚
KD002 意外的版本
KD003 数据类型的访问权限不正确
KD004 Delta 协议版本错误
KD005 表必须至少包含一个非分区列
KD006 在日志路径中找不到提交
KD007 表签名已更改
KD008 表签名未设置
KD009 分区不匹配
KD00A 意外的部分扫描
KD00B 无法识别的文件
KD00C 版本不连续
KD00D 需要统计信息
KD00E 表功能验证失败
KD00F 云请求错误
KD010 外部数据源失败
KDL01 群集启动错误

P0:过程逻辑错误

SQLSTATE 说明和生成错误条件
P0001 引发异常