概述
SmartEDB运行时会为大多数 C API 函数返回整数代码,以指示成功或失败。运行时返回三种不同类型的返回代码:
- 状态代码(MCO_S_*):指示在正常数据库操作期间可能且将会出现的运行时状态;
- 非致命错误代码(MCO_E_*):指示运行时错误情况,应用程序可以通过适当响应来处理;
- 致命错误代码(MCO_ERR_*):指示应用程序代码中的错误,导致运行时无法安全地继续执行。
以下来自运行时文件 mcocsr.c
的函数代码说明了这三种返回代码类型的使用:
MCO_RET mco_cursor_check(mco_trans_h t, mco_cursor_h c0)
{
mco_scursor_t* c = (mco_scursor_t*)(c0);
mco_objhandle_t obj;
MCO_RET rc;
#ifdef MCO_CFG_CHECKLEVEL_1
if (!CHECK_TRANSACTION((mco_db_connection_h)t))
{
mco_stop(MCO_ERR_TRN + 5);
}
#endif
if (c->mark != MCO_DB_CURSOR_MARK || c->endmark != MCO_DB_CURSOR_MARK)
{
return MCO_E_INVALID_HANDLE;
}
rc = mco_w_obj_from_cursor(t, c0, c->csr_class_code, &obj);
if (rc != MCO_S_OK)
{
return MCO_E_CURSOR_INVALID;
}
return MCO_S_OK;
}
请注意:
- MCO_S* 和 MCO_E* 类型的返回代码直接从运行时函数返回,由应用程序代码进行管理。
- MCO_ERR_* 类型的返回代码会传递到运行时函数
mco_stop()
以终止执行。致命错误情况可能会导致运行时异常,在 C 和 C++ 应用程序中,可能会被致命错误处理程序捕获;如果应用程序未注册致命错误处理程序,致命错误可能会导致应用程序看起来挂起。
有关这些返回代码的进一步解释以及如何确定其原因,请参阅致命错误代码页面。
请使用以下链接查看不同类别 SmartEDB返回码的含义:
返回码 | 返回值 | 说明 |
---|---|---|
状态码 | 0~19 | 状态代码 |
非致命错误码 | 49~99 | 999 | 非致命错误代码 |
磁盘管理器错误码 | 100 -199 | 磁盘管理器错误代码 |
XML错误码 | 200~299 | XML 错误代码 |
网络错误码 | 300~399 | 网络错误代码 |
HA错误码 | 400~499 | 高可用性模块错误代码 |
UDA错误码 | 500~599 | 统一数据库访问错误代码 |
事务日志错误码 | 600~699 | 事务日志错误代码 |
序列处理错误码 | 700~799 | 序列错误代码 |
数据定义语言错误码 | 800~899 | 数据定义语言错误代码 |
集群功能错误码 | 900~998 | 集群功能错误代码 |
性能监控器错误码 | 1000~1100 | 性能监控器和其他错误代码 |
致命错误码 | 100000~1999999 | 致命错误代码 |
物联网特定返回码 | 1200~1299 | IoT 特定返回代码 |
源处理特定返回码 | 0~10 | Feed 处理程序特定的返回代码 |
网络服务特定返回码 | 0~11 | Web 服务特定的返回代码 |
SQL特定返回码 | 0-19 | SQL特定的返回代码 |