SQLSTATE 错误代码
适用于: Databricks SQL Databricks Runtime 12.2 及更高版本
Azure Databricks 返回的所有错误类都与一个 5 字符 SQLSTATE
相关联。
SQLSTATE
是 JDBC
、ODBC
和其他客户端 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 子句与动态参数规范不匹配 |
ALL_PARAMETERS_MUST_BE_NAMED, FUNCTION_PARAMETERS_MUST_BE_NAMED | |
07501 |
在 PREPARE 或 EXECUTE 上指定的选项无效。 |
INVALID_STATEMENT_FOR_EXECUTE_INTO、NESTED_EXECUTE_IMMEDIATE |
类 08
:连接异常
SQLSTATE | 描述和发出错误类 |
---|---|
08000 |
连接异常 |
AI_FUNCTION_HTTP_REQUEST_ERROR、AI_FUNCTION_INVALID_HTTP_RESPONSE、CANNOT_VALIDATE_CONNECTION | |
08001 |
SQL 客户端无法建立 SQL 连接 |
CANNOT_ESTABLISH_CONNECTION、CANNOT_ESTABLISH_CONNECTION_SERVERLESS | |
08003 |
连接不存在 |
DELTA_ACTIVE_SPARK_SESSION_NOT_FOUND | |
08KD1 |
服务器忙 |
SERVER_IS_BUSY |
类 0A
:功能不受支持
类 0B
:无效的事务启动
SQLSTATE | 描述和发出错误类 |
---|---|
0B000 |
无效的事务启动 |
DELTA_ACTIVE_TRANSACTION_ALREADY_SET |
类 0N
:SQL/XML 映射错误
SQLSTATE | 描述和发出错误类 |
---|---|
0N000 |
SQL/XML 映射错误 |
XML_UNSUPPORTED_NESTED_TYPES |
类 21
:基数冲突
SQLSTATE | 描述和发出错误类 |
---|---|
21000 |
基数冲突 |
ROW_SUBQUERY_TOO_MANY_ROWS, SCALAR_SUBQUERY_TOO_MANY_ROWS | |
21506 |
表的同一行不能是多个更新、删除或插入操作的目标。 |
DELTA_MULTIPLE_SOURCE_ROW_MATCHING_TARGET_ROW_IN_MERGE | |
21S01 |
插入值列表与列列表不匹配 |
COPY_INTO_COLUMN_ARITY_MISMATCH, CREATE_VIEW_COLUMN_ARITY_MISMATCH, INSERT_COLUMN_ARITY_MISMATCH, INSERT_PARTITION_COLUMN_ARITY_MISMATCH |
类 22
:数据异常
类 23
:完整性约束冲突
SQLSTATE | 描述和发出错误类 |
---|---|
23001 |
限制冲突 |
DELTA_VIOLATE_CONSTRAINT_WITH_VALUES | |
23502 |
插入或更新值为 null,但列不能包含 null 值。 |
DELTA_MISSING_NOT_NULL_COLUMN_VALUE、DELTA_NOT_NULL_CONSTRAINT_VIOLATED | |
23505 |
唯一索引或唯一约束施加的约束发生冲突。 |
DUPLICATED_MAP_KEY、DUPLICATE_KEY | |
23512 |
无法添加检查约束,因为表包含不满足约束定义的行。 |
DELTA_NEW_CHECK_CONSTRAINT_VIOLATION、DELTA_NEW_NOT_NULL_VIOLATION | |
23K01 |
MERGE 基数冲突 |
MERGE_CARDINALITY_VIOLATION |
类 25
:无效的事务状态
类 2B
:依赖特权描述符仍然存在
SQLSTATE | 描述和发出错误类 |
---|---|
2BP01 |
依赖对象仍然存在 |
SCHEMA_NOT_EMPTY |
类 2D
:无效的事务终止
SQLSTATE | 描述和发出错误类 |
---|---|
2D521 |
SQL COMMIT 或 ROLLBACK 在当前操作环境中无效。 |
DELTA_CONCURRENT_APPEND, DELTA_CONCURRENT_DELETE_DELETE, DELTA_CONCURRENT_DELETE_READ, DELTA_CONCURRENT_TRANSACTION, DELTA_CONCURRENT_WRITE, DELTA_DELETION_VECTOR_MISSING_NUM_RECORDS, DELTA_DUPLICATE_ACTIONS_FOUND, DELTA_METADATA_CHANGED, DELTA_PROTOCOL_CHANGED | |
2DKD0 |
提交后挂钩失败。 |
DELTA_POST_COMMIT_HOOK_FAILED |
类 38
:外部例程异常
类 39
:外部例程调用异常
SQLSTATE | 描述和发出错误类 |
---|---|
39000 |
外部例程调用异常 |
FAILED_EXECUTE_UDF、FOREACH_BATCH_USER_FUNCTION_ERROR、UDF_USER_CODE_ERROR |
类 3D
:无效的目录名称
SQLSTATE | 描述和发出错误类 |
---|---|
3D000 |
无效的目录名称 |
UC_CATALOG_NAME_NOT_PROVIDED |
类 40
:事务回滚
SQLSTATE | 描述和发出错误类 |
---|---|
40000 |
事务回滚 (transaction rollback) |
CONCURRENT_STREAM_LOG_UPDATE, DELTA_MAX_COMMIT_RETRIES_EXCEEDED |
类 42
:语法错误或访问规则冲突
类 44
:发生检查选项冲突
SQLSTATE | 描述和发出错误类 |
---|---|
44000 |
发生检查选项冲突 |
DELTA_REPLACE_WHERE_MISMATCH |
类 46
:Java DDL 1
SQLSTATE | 描述和发出错误类 |
---|---|
46103 |
未解析的类名 |
CANNOT_LOAD_FUNCTION_CLASS | |
46110 |
不支持的功能 |
CANNOT_MODIFY_CONFIG | |
46121 |
列名称无效 |
INVALID_COLUMN_NAME_AS_PATH |
类 51
:应用程序状态无效
SQLSTATE | 描述和发出错误类 |
---|---|
51024 |
不能使用对象,因为它已被标记为无效。 |
INCOMPATIBLE_VIEW_SCHEMA_CHANGE |
类 53
:资源不足
SQLSTATE | 描述和发出错误类 |
---|---|
53200 |
内存不足 |
EXECUTOR_BROADCAST_JOIN_OOM、UNABLE_TO_ACQUIRE_MEMORY |
类 54
:超出程序限制
SQLSTATE | 描述和发出错误类 |
---|---|
54000 |
超出程序限制 |
COLLECTION_SIZE_LIMIT_EXCEEDED、DELTA_CLUSTER_BY_INVALID_NUM_COLUMNS、GROUPING_SIZE_LIMIT_EXCEEDED、RELATION_LARGER_THAN_8G | |
54001 |
语句太长或太复杂。 |
FAILED_TO_PARSE_TOO_COMPLEX | |
54006 |
结果字符串太长。 |
EXCEED_LIMIT_LENGTH、KRYO_BUFFER_OVERFLOW | |
54023 |
参数太多 |
TABLE_VALUED_FUNCTION_TOO_MANY_TABLE_ARGUMENTS | |
54K00 |
已超出嵌套视图的最大深度。 |
VIEW_EXCEED_MAX_NESTED_DEPTH | |
54KD0 |
超出了查询计划中的最大 UDF 计数。 |
UDF_LIMITS、UDF_MAX_COUNT_EXCEEDED | |
54KD1 |
超过会话中的最大对象数。 |
MAX_NUMBER_VARIABLES_IN_SESSION_EXCEEDED |
类 55
:对象不处于先决条件状态
类 56
:其他 SQL 或产品错误
类 57
:操作员干预
SQLSTATE | 描述和发出错误类 |
---|---|
57012 |
非数据库资源不可用。 这不会影响后续语句的成功执行。 |
REMOTE_FUNCTION_HTTP_FAILED_ERROR、REMOTE_FUNCTION_HTTP_RESULT_UNEXPECTED_ERROR、REMOTE_FUNCTION_HTTP_RETRY_TIMEOUT、REMOTE_FUNCTION_MISSING_REQUIREMENTS_ERROR |
类 58
:系统错误
SQLSTATE | 描述和发出错误类 |
---|---|
58000 |
系统错误 |
CLOUD_PROVIDER_ERROR | |
58030 |
I/O 错误 |
CANNOT_LOAD_STATE_STORE、CANNOT_RESTORE_PERMISSIONS_FOR_PATH、CANNOT_WRITE_STATE_STORE、FAILED_RENAME_TEMP_FILE、INVALID_BUCKET_FILE、TASK_WRITE_FAILED、UNABLE_TO_FETCH_HIVE_TABLES |
类 82
:内存不足
SQLSTATE | 描述和发出错误类 |
---|---|
82100 |
内存不足(无法分配) |
DELTA_BLOOM_FILTER_OOM_ON_WRITE |
类 F0
:配置文件错误
类 HV
:特定于 FDW 的条件
SQLSTATE | 描述和发出错误类 |
---|---|
HV000 |
特定于 FDW 的条件 |
FAILED_JDBC | |
HV091 |
无效的描述符字段标识符 |
NONEXISTENT_FIELD_NAME_IN_LIST |
类 HY
:特定于 CLI 的条件
SQLSTATE | 描述和发出错误类 |
---|---|
HY000 |
特定于 CLI 的条件 |
INVALID_HANDLE | |
HY008 |
操作已取消 |
OPERATION_CANCELED | |
HY109 |
无效的游标位置 |
INVALID_CURSOR |
类 KD
:特定于数据源的错误
类 P0
:过程逻辑错误
SQLSTATE | 描述和发出错误类 |
---|---|
P0001 |
引发异常 |
USER_RAISED_EXCEPTION、USER_RAISED_EXCEPTION_PARAMETER_MISMATCH、USER_RAISED_EXCEPTION_UNKNOWN_ERROR_CLASS |