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 值
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_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 Schema 限定詞無效。
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 無效的 Schema 文字
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_FOUNDVIEW_NOT_FOUND
42P02 undefined_parameter
UNBOUND_SQL_PARAMETER
42P06 duplicate_schema
SCHEMA_ALREADY_EXISTS
42P07 duplicate_table
TABLE_OR_VIEW_ALREADY_EXISTSTEMP_TABLE_OR_VIEW_ALREADY_EXISTSVIEW_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 out_of_memory
UNABLE_TO_ACQUIRE_MEMORY

類別 54:程式限制已超過

SQLSTATE說明和發出錯誤類別
54000 程式限制已超過
GROUPING_SIZE_LIMIT_EXCEEDEDTOO_MANY_ARRAY_ELEMENTS

類別 HY:CLI 特定條件

SQLSTATE說明和發出錯誤類別
HY008 操作已取消
OPERATION_CANCELED

類別 XX:內部錯誤

SQLSTATE說明和發出錯誤類別
XX000 內部錯誤
INTERNAL_ERROR