SQLSTATE 代码

Spark SQL 返回的大多数错误类都与一个 5 个字符的 SQLSTATE 相关联。SQLSTATE 是错误情况的 SQL 标准编码,通常由 JDBCODBC 和其他客户端 API 使用。

SQLSTATE 由两部分组成:一个两位字符的类和一个三位字符的子类。每个字符必须是数字 '0''9''A''Z'

虽然许多 SQLSTATE 值是由 SQL 标准规定的,但其他一些值在业界也很常见,是 Spark 特有的。

有关错误类的有序列表,请参阅:Spark SQL 中的错误情况

Spark SQL 使用以下 SQLSTATE

0A:不支持的功能

SQLSTATE描述和发出错误的类
0A000 不支持的功能
INVALID_PANDAS_UDF_PLACEMENTSTAR_GROUP_BY_POSUNSUPPORTED_ARROWTYPEUNSUPPORTED_DATATYPEUNSUPPORTED_DESERIALIZERUNSUPPORTED_FEATUREUNSUPPORTED_GENERATORUNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORYUNSUPPORTED_TYPED_LITERAL

21:基数违规

SQLSTATE描述和发出错误的类
21000 基数违规
SCALAR_SUBQUERY_TOO_MANY_ROWS

22:数据异常

SQLSTATE描述和发出错误的类
22003 数值超出范围
ARITHMETIC_OVERFLOWCAST_OVERFLOWCAST_OVERFLOW_IN_TABLE_INSERTDECIMAL_PRECISION_EXCEEDS_MAX_PRECISIONINVALID_INDEX_OF_ZEROINCORRECT_END_OFFSETINCORRECT_RAMP_UP_RATEINVALID_ARRAY_INDEXINVALID_ARRAY_INDEX_IN_ELEMENT_ATNUMERIC_OUT_OF_SUPPORTED_RANGENUMERIC_VALUE_OUT_OF_RANGE
22007 无效的日期时间格式
CANNOT_PARSE_TIMESTAMP
22008 日期时间字段溢出
DATETIME_OVERFLOW
2200E 数组目标中的空值
NULL_MAP_KEY
22012 除以零
DIVIDE_BY_ZEROINTERVAL_DIVIDED_BY_ZERO
22015 间隔字段溢出
INTERVAL_ARITHMETIC_OVERFLOW
22018 转换的字符值无效
CANNOT_PARSE_DECIMALCAST_INVALID_INPUTCONVERSION_INVALID_INPUT
22023 无效的参数值
INVALID_FRACTION_OF_SECONDINVALID_PARAMETER_VALUESECOND_FUNCTION_ARGUMENT_NOT_INTEGER
22032 无效的 JSON 文本
INVALID_JSON_ROOT_FIELDINVALID_JSON_SCHEMA_MAP_TYPE
2203G sql_json_item_cannot_be_cast_to_target_type
CANNOT_PARSE_JSON_FIELD
22546 例程参数的值无效。
CANNOT_DECODE_URL

23:完整性约束违规

SQLSTATE描述和发出错误的类
23505 发生了违反唯一索引或唯一约束施加的约束的情况。
DUPLICATED_MAP_KEYDUPLICATE_KEY

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

SQLSTATE描述和发出错误的类
2BP01 dependent_objects_still_exist
SCHEMA_NOT_EMPTY

38:外部例程异常

SQLSTATE描述和发出错误的类
38000 外部例程异常
FAILED_FUNCTION_CALL

39:外部例程调用异常

SQLSTATE描述和发出错误的类
39000 外部例程调用异常
FAILED_EXECUTE_UDF

42:语法错误或访问规则违规

SQLSTATE描述和发出错误的类
42000 语法错误或访问规则违规
AMBIGUOUS_REFERENCE_TO_FIELDSINVALID_COLUMN_OR_FIELD_DATA_TYPEINVALID_EXTRACT_BASE_FIELD_TYPEINVALID_EXTRACT_FIELD_TYPEINVALID_FIELD_NAMEINVALID_SET_SYNTAXINVALID_SQL_SYNTAXNON_PARTITION_COLUMNNOT_NULL_CONSTRAINT_VIOLATIONNULLABLE_COLUMN_OR_FIELDNULLABLE_ROW_ID_ATTRIBUTES
42601 字符、标记或子句无效或缺失。
IDENTIFIER_TOO_MANY_NAME_PARTSINVALID_EXTRACT_FIELDINVALID_FORMATPARSE_SYNTAX_ERRORUNCLOSED_BRACKETED_COMMENT
42602 检测到名称中存在无效字符。
INVALID_IDENTIFIERINVALID_PROPERTY_KEYINVALID_PROPERTY_VALUE
42604 检测到无效的数字或字符串常量。
EMPTY_JSON_FIELD_VALUEINVALID_TYPED_LITERAL
42605 为标量函数指定的参数数量无效。
WRONG_NUM_ARGS
42607 聚合函数或 CONCAT 运算符的操作数无效。
NESTED_AGGREGATE_FUNCTION
42613 子句互斥。
INCOMPATIBLE_JOIN_TYPESINVALID_LATERAL_JOIN_TYPENON_LAST_MATCHED_CLAUSE_OMIT_CONDITIONNON_LAST_NOT_MATCHED_BY_SOURCE_CLAUSE_OMIT_CONDITIONNON_LAST_NOT_MATCHED_BY_TARGET_CLAUSE_OMIT_CONDITION
42614 重复的关键字或子句无效。
REPEATED_CLAUSE
42617 语句字符串为空或为空白。
PARSE_EMPTY_STATEMENT
42702 列引用不明确,因为名称重复。
AMBIGUOUS_COLUMN_OR_FIELDAMBIGUOUS_LATERAL_COLUMN_ALIAS
42703 检测到未定义的列或参数名称。
COLUMN_NOT_FOUNDUNRESOLVED_COLUMNUNRESOLVED_FIELDUNRESOLVED_MAP_KEYUNRESOLVED_USING_COLUMN_FOR_JOIN
42704 检测到未定义的对象或约束名称。
AMBIGUOUS_REFERENCEDEFAULT_DATABASE_NOT_EXISTSFIELD_NOT_FOUNDINDEX_NOT_FOUNDSCHEMA_NOT_FOUNDUNRECOGNIZED_SQL_TYPE
42710 检测到重复的对象或约束名称。
CREATE_TABLE_COLUMN_OPTION_DUPLICATEINDEX_ALREADY_EXISTSLOCATION_ALREADY_EXISTS
42711 在对象定义或 ALTER TABLE 语句中检测到重复的列名。
COLUMN_ALREADY_EXISTS
42723 在定义例程的架构、模块或复合块中已存在具有相同签名的例程。
ROUTINE_ALREADY_EXISTS
42803 SELECT 或 HAVING 子句中的列引用无效,因为它不是分组列;或者 GROUP BY 子句中的列引用无效。
GROUPING_COLUMN_MISMATCHGROUPING_ID_COLUMN_MISMATCHMISSING_AGGREGATIONMISSING_GROUP_BYUNRESOLVED_ALL_IN_GROUP_BY
42805 ORDER BY 子句中的整数未标识结果表的列。
GROUP_BY_POS_OUT_OF_RANGEORDER_BY_POS_OUT_OF_RANGE
42809 标识的对象不是语句适用的对象类型。
FORBIDDEN_OPERATION
42818 运算符或函数的操作数不兼容或不可比较。
INCOMPARABLE_PIVOT_COLUMN
42823 从仅允许一列的子查询返回了多列。
INVALID_SUBQUERY_EXPRESSION
42825 UNION、INTERSECT、EXCEPT 或 VALUES 的行没有兼容的列。
CANNOT_MERGE_INCOMPATIBLE_DATA_TYPEINCOMPATIBLE_COLUMN_TYPE
42826 UNION、INTERSECT、EXCEPT 或 VALUES 的行没有相同数量的列。
NUM_COLUMNS_MISMATCH
42846 不支持从源类型转换为目标类型。
CANNOT_CAST_DATATYPE
42883 找不到具有匹配签名的例程。
ROUTINE_NOT_FOUNDUNRESOLVED_ROUTINE
428C4 谓词运算符两侧的元素数量不同。
UNPIVOT_VALUE_SIZE_MISMATCH
428EK 架构限定符无效。
TEMP_VIEW_NAME_TOO_MANY_NAME_PARTS
428FT 在 CREATE 或 ALTER 上指定的分区子句无效。
分区已存在, 找不到分区
42903 聚合函数或 OLAP 函数使用无效。
GROUP_BY_AGGREGATE, GROUP_BY_POS_AGGREGATE, WHERE 条件无效
429BB 不支持列、参数或 SQL 变量的数据类型。
无法识别 Hive 类型
42K01 数据类型未完全指定
缺少数据类型大小, 不完整的类型定义
42K02 找不到数据源
找不到数据源
42K03 找不到文件
找不到路径, 找不到重命名源路径
42K04 重复文件
重命名路径失败, 路径已存在
42K05 名称无效
位置为空无效, 命名空间需要单一部件
42K06 选项类型无效
选项无效
42K07 无效的架构字面量
架构无效
42K08 不是常量
非字面量透视值
42K09 数据类型不匹配
数据类型不匹配, 透视值数据类型不匹配, 意外的输入类型, 反透视值数据类型不匹配
42K0A UNPIVOT 子句无效
UNPIVOT 需要属性, UNPIVOT 需要值列
42K0B 旧功能被阻止
跨版本行为不一致
42KD9 无法推断表架构。
无法推断架构
42P01 未定义的表
找不到表或视图, 找不到视图
42P02 未定义的参数
未绑定的 SQL 参数
42P06 重复的架构
架构已存在
42P07 重复的表
表或视图已存在, 临时表或视图已存在, 视图已存在
42P20 窗口化错误
不支持的窗口表达式

46: java ddl 1

SQLSTATE描述和发出错误的类
46110 不支持的功能
无法修改配置
46121 无效的列名
作为路径的列名无效

53: 资源不足

SQLSTATE描述和发出错误的类
53200 内存不足
无法获取内存

54: 超出程序限制

SQLSTATE描述和发出错误的类
54000 超出程序限制
超出分组大小限制, 数组元素过多

HY: CLI 特定条件

SQLSTATE描述和发出错误的类
HY008 操作已取消
操作已取消

XX: 内部错误

SQLSTATE描述和发出错误的类
XX000 内部错误
内部错误