SQLSTATE 代码

Spark SQL 返回的大多数错误类别与一个 5 个字符的 SQLSTATE 相关联。 SQLSTATE 是一个用于表示错误条件的 SQL 标准编码,通常被 JDBC ODBC 和其他客户端 API 使用。

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

虽然许多 SQLSTATE 值是由SQL标准规定的,但在行业中,其他一些值是特定于Spark的。

有关错误类别的有序列表,请参见: Error Conditions in Spark SQL

Spark SQL使用以下 SQLSTATE 类:

0A : 特性不支持

SQLSTATE 描述和发布错误类
0A000 不支持的功能
INVALID_PANDAS_UDF_PLACEMENT , STAR_GROUP_BY_POS , UNSUPPORTED_ARROWTYPE , UNSUPPORTED_DATATYPE , UNSUPPORTED_DESERIALIZER , UNSUPPORTED_FEATURE , UNSUPPORTED_GENERATOR , UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY , UNSUPPORTED_TYPED_LITERAL

21 : 基数违反

SQL状态 描述和发出错误类别
21000 基数违规
SCALAR_SUBQUERY_TOO_MANY_ROWS

22 : 数据异常

SQLSTATE 描述和发出错误的类
22003 数值超出范围
ARITHMETIC_OVERFLOW , CAST_OVERFLOW , CAST_OVERFLOW_IN_TABLE_INSERT , DECIMAL_PRECISION_EXCEEDS_MAX_PRECISION , INVALID_INDEX_OF_ZERO , INCORRECT_END_OFFSET , INCORRECT_RAMP_UP_RATE , INVALID_ARRAY_INDEX , INVALID_ARRAY_INDEX_IN_ELEMENT_AT , NUMERIC_OUT_OF_SUPPORTED_RANGE , NUMERIC_VALUE_OUT_OF_RANGE
22007 无效的日期时间格式
CANNOT_PARSE_TIMESTAMP
22008 日期时间字段溢出
DATETIME_OVERFLOW
2200E 数组目标中的空值
NULL_MAP_KEY
22012 除以零
DIVIDE_BY_ZERO , INTERVAL_DIVIDED_BY_ZERO
22015 间隔字段溢出
INTERVAL_ARITHMETIC_OVERFLOW
22018 无效的字符值用于转换
CANNOT_PARSE_DECIMAL , CAST_INVALID_INPUT , CONVERSION_INVALID_INPUT
22023 无效的参数值
INVALID_FRACTION_OF_SECOND , INVALID_PARAMETER_VALUE , SECOND_FUNCTION_ARGUMENT_NOT_INTEGER
22032 无效的JSON文本
INVALID_JSON_ROOT_FIELD , INVALID_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_KEY , DUPLICATE_KEY

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

SQL状态 描述和发出错误的类别
2BP01 依赖对象仍然存在
SCHEMA_NOT_EMPTY

38 : 外部例程异常

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

39 : 外部例程调用异常

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

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

SQLSTATE 描述和发出错误类
42000 语法错误或访问规则违反
AMBIGUOUS_REFERENCE_TO_FIELDS INVALID_COLUMN_OR_FIELD_DATA_TYPE INVALID_EXTRACT_BASE_FIELD_TYPE INVALID_EXTRACT_FIELD_TYPE INVALID_FIELD_NAME INVALID_SET_SYNTAX INVALID_SQL_SYNTAX NON_PARTITION_COLUMN NOT_NULL_CONSTRAINT_VIOLATION NULLABLE_COLUMN_OR_FIELD NULLABLE_ROW_ID_ATTRIBUTES
42601 字符、标记或子句无效或缺失。
IDENTIFIER_TOO_MANY_NAME_PARTS INVALID_EXTRACT_FIELD INVALID_FORMAT PARSE_SYNTAX_ERROR UNCLOSED_BRACKETED_COMMENT
42602 检测到名称中包含无效字符。
INVALID_IDENTIFIER INVALID_PROPERTY_KEY INVALID_PROPERTY_VALUE
42604 检测到无效的数字或字符串常量。
EMPTY_JSON_FIELD_VALUE INVALID_TYPED_LITERAL
42605 为标量函数指定的参数数量无效。
WRONG_NUM_ARGS
42607 聚合函数或CONCAT操作符的操作数无效。
NESTED_AGGREGATE_FUNCTION
42613 子句是互斥的。
INCOMPATIBLE_JOIN_TYPES INVALID_LATERAL_JOIN_TYPE NON_LAST_MATCHED_CLAUSE_OMIT_CONDITION NON_LAST_NOT_MATCHED_BY_SOURCE_CLAUSE_OMIT_CONDITION NON_LAST_NOT_MATCHED_BY_TARGET_CLAUSE_OMIT_CONDITION
42614 重复的关键字或子句无效。
REPEATED_CLAUSE
42617 语句字符串为空或无内容。
PARSE_EMPTY_STATEMENT
42702 列引用模糊,因为有重复名称。
AMBIGUOUS_COLUMN_OR_FIELD AMBIGUOUS_LATERAL_COLUMN_ALIAS
42703 检测到未定义的列或参数名称。
COLUMN_NOT_FOUND UNRESOLVED_COLUMN UNRESOLVED_FIELD UNRESOLVED_MAP_KEY UNRESOLVED_USING_COLUMN_FOR_JOIN
42704 检测到未定义的对象或约束名称。
AMBIGUOUS_REFERENCE DEFAULT_DATABASE_NOT_EXISTS FIELD_NOT_FOUND INDEX_NOT_FOUND SCHEMA_NOT_FOUND UNRECOGNIZED_SQL_TYPE
42710 检测到重复的对象或约束名称。
CREATE_TABLE_COLUMN_OPTION_DUPLICATE INDEX_ALREADY_EXISTS LOCATION_ALREADY_EXISTS
42711 在对象定义或ALTER TABLE语句中检测到重复的列名称。
COLUMN_ALREADY_EXISTS
42723 具有相同签名的例程已存在于其定义的模式、模块或复合块中。
ROUTINE_ALREADY_EXISTS
42803 SELECT或HAVING子句中的列引用无效,因为它不是分组列;或GROUP BY子句中的列引用无效。
GROUPING_COLUMN_MISMATCH GROUPING_ID_COLUMN_MISMATCH MISSING_AGGREGATION MISSING_GROUP_BY UNRESOLVED_ALL_IN_GROUP_BY
42805 ORDER BY子句中的整数未标识结果表的列。
GROUP_BY_POS_OUT_OF_RANGE ORDER_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_TYPE INCOMPATIBLE_COLUMN_TYPE
42826 UNION、INTERSECT、EXCEPT或VALUES的行没有相同数量的列。
NUM_COLUMNS_MISMATCH
42846 从源类型到目标类型的转换不受支持。
CANNOT_CAST_DATATYPE
42883 未找到具有匹配签名的例程。
ROUTINE_NOT_FOUND UNRESOLVED_ROUTINE
428C4 谓词运算符两侧的元素数量不同。
UNPIVOT_VALUE_SIZE_MISMATCH
428EK 模式限定符无效。
TEMP_VIEW_NAME_TOO_MANY_NAME_PARTS
428FT 在CREATE或ALTER上指定的分区子句无效。
PARTITIONS_ALREADY_EXIST PARTITIONS_NOT_FOUND
42903 无效使用聚合函数或OLAP函数。
GROUP_BY_AGGREGATE GROUP_BY_POS_AGGREGATE INVALID_WHERE_CONDITION
429BB 列、参数或SQL变量的数据类型不受支持。
CANNOT_RECOGNIZE_HIVE_TYPE
42K01 数据类型未完全指定
DATATYPE_MISSING_SIZE INCOMPLETE_TYPE_DEFINITION
42K02 数据源未找到
DATA_SOURCE_NOT_FOUND
42K03 未找到文件
PATH_NOT_FOUND RENAME_SRC_PATH_NOT_FOUND
42K04 文件重复
FAILED_RENAME_PATH PATH_ALREADY_EXISTS
42K05 名称无效
INVALID_EMPTY_LOCATION REQUIRES_SINGLE_PART_NAMESPACE
42K06 选项类型无效
INVALID_OPTIONS
42K07 不是有效的模式字面量
INVALID_SCHEMA
42K08 不是常量
NON_LITERAL_PIVOT_VALUES
42K09 数据类型不匹配
DATATYPE_MISMATCH PIVOT_VALUE_DATA_TYPE_MISMATCH UNEXPECTED_INPUT_TYPE UNPIVOT_VALUE_DATA_TYPE_MISMATCH
42K0A 无效的UNPIVOT子句
UNPIVOT_REQUIRES_ATTRIBUTES UNPIVOT_REQUIRES_VALUE_COLUMNS
42K0B 阻止遗留功能
INCONSISTENT_BEHAVIOR_CROSS_VERSION
42KD9 无法推断表模式。
UNABLE_TO_INFER_SCHEMA
42P01 undefined_table
TABLE_OR_VIEW_NOT_FOUND VIEW_NOT_FOUND
42P02 undefined_parameter
UNBOUND_SQL_PARAMETER
42P06 duplicate_schema
SCHEMA_ALREADY_EXISTS
42P07 duplicate_table
TABLE_OR_VIEW_ALREADY_EXISTS TEMP_TABLE_OR_VIEW_ALREADY_EXISTS VIEW_ALREADY_EXISTS
42P20 windowing_error
UNSUPPORTED_EXPR_FOR_WINDOW

46 : java ddl 1

SQLSTATE 描述和发出错误的类别
46110 不支持的功能
CANNOT_MODIFY_CONFIG
46121 无效的列名
INVALID_COLUMN_NAME_AS_PATH

53 : 资源不足

SQLSTATE 描述和发出错误类
53200 内存不足
UNABLE_TO_ACQUIRE_MEMORY

54 : 程序限制超出

SQLSTATE 描述和发出错误的类别
54000 程序限制超出
GROUPING_SIZE_LIMIT_EXCEEDED , TOO_MANY_ARRAY_ELEMENTS

HY : CLI特定条件

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

XX : 内部错误

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

.. include:: /shared/replacements.md