错误码
Contents
错误码#
客户端执行返回的状态类是 hybridse::sdk::Status
,错误码使用 StatusCode。但有些错误是服务端连接错误或返回错误 openmldb::base::Status
,我们也需要分辨它们,所以hybridse::sdk::Status
的错误信息中可能会追加 openmldb::base::Status
的错误码与错误信息,openmldb::base::Status
使用的错误码ReturnCode会用 ReturnCode[xxx]
标识。
例如:
Error: [2001] async offline query failed--ReturnCode[1003]--Fail to get TaskManager client
这个错误中2001为StatusCode::kServerError
,它提示真实错误是openmldb::base::Status
,需要查ReturnCode和其后的错误信息。--ReturnCode
前的信息可能提示调用栈,方便追踪问题的链路。而ReturnCode[1003]
是ReturnCode::kServerConnError
,它说明客户端连接服务端出错,请检查服务端是否存活,或网络连接是否稳定。
StatusCode 错误码#
StatusCode 定义在fe_common.proto。
常见错误的打印内容列表如下:
错误码 |
数值 |
说明 |
---|---|---|
kRpcError |
1500 |
与kServerError不同,强调RPC错误,出现在客户端直连 tablet 服务端执行Query/CallProcedure等RPC的时候。可能是 RPC 本身出错(与ReturnCode::kRPCError类似),也可能是 RPC Response 返回错误 |
kConnError |
1501 |
与ReturnCode::kServerConnError等价,只是直接返回 |
kCmdError |
2000 |
命令行 SQL 执行错误,通常是客户端解析或执行DELETE时出错 |
kServerError |
2001 |
请查ReturnCode 错误码。(其中也可能包含较底层的RPC错误) |
ReturnCode 错误码#
ReturnCode 定义在base/status.h,通常出现在连接服务端失败、服务端执行产生错误的时候。
常见错误的打印内容列表如下:
错误码 |
数值 |
说明 |
---|---|---|
kError |
-1 |
没有单独错误码的错误,重点看错误信息 |
kSQLCmdRunError |
901 |
客户端执行 SQL 失败,可能在本地导入导出、创建表或存储过程时出现 |
kSQLCompileError |
1000 |
Tablet 服务端中 SQL 编译错误,极少出现 |
kSQLRunError |
1001 |
Tablet 服务端执行查询时出错 |
kRPCRunError |
1002 |
服务端执行RPC出错,目前只有 CREATE/DROP FUNCTION 命令会报这个错误 |
kServerConnError |
1003 |
客户端连接服务端出错,通常出现在连接 TaskManager 失败,可能 TaskManager 并未启动或在集群中 |
kRPCError |
1004 |
客户端发送RPC失败,错误信息为brpc的错误码与错误信息。通常是连接中断或RPC超时等,具体可以查询brpc错误码 |