文档首页
MySQL NDB Cluster API 开发人员指南
相关文档 下载此手册
PDF (US Ltr) - 3.6Mb
PDF (A4) - 3.6Mb


2.3.15 NdbError 结构

本节提供有关 NdbError 数据结构的信息,该结构包含有关错误的状态和其他信息,包括错误代码、分类和消息。

NdbError 概述

描述

一个 NdbError 由六部分组成,如下所示,其中一部分已弃用

  1. 错误状态:这描述了错误对应用程序的影响,并反映了应用程序在遇到错误时应该采取的操作。

    错误状态由 Status 类型的值描述。请参见 NdbError::Status,了解可能的 Status 值以及如何解释它们。

  2. 错误分类:这表示逻辑错误类型或分组。

    错误分类由 Classification 类型的值描述。请参见 NdbError::Classification,了解可能的分类及其解释。在 第 2.4.4 节,“NDB 错误分类” 中提供了更多信息。

  3. 错误代码:这是一个 NDB API 内部错误代码,它唯一标识错误。

    重要提示

    不建议编写依赖于特定错误代码的应用程序程序。相反,应用程序应该检查错误状态和分类。还可以通过检查错误消息和(如果可用)错误详细信息消息来获取有关错误的更多信息。但是,与错误代码一样,这些错误消息和错误详细信息消息可能会发生变化。

    按分类列出的当前错误代码列表在 第 2.4.2 节,“NDB 错误代码:按类型” 中提供。此列表会随着新的 NDB Cluster 版本而更新。您还可以检查 NDB Cluster 源代码中的 storage/ndb/src/ndbapi/ndberror.c 文件。

  4. MySQL 错误代码:这是对应的 MySQL 服务器错误代码。MySQL 错误代码在本文件中未讨论;有关这些错误代码的信息,请参见 MySQL 手册中的 服务器错误消息参考

  5. 错误消息:这是一个通用的、与上下文无关的错误描述。

  6. 错误详细信息:这通常可以提供有关错误的更多信息(在错误消息中找不到),具体取决于遇到错误的环境。但是,并非所有情况下都可用。

    如果未指定,则错误详细信息消息为 NULL

    注意

    此属性已弃用,并计划最终删除。为了获取错误详细信息,您应该改为使用 Ndb::getNdbErrorDetail() 方法。(Bug #48851)

特定的 NDB API 错误代码、消息和详细信息消息可能会在未经通知的情况下发生更改。

定义

NdbError 结构包含以下成员,其类型如下所示

  • Status status:错误状态。

  • Classification classification:错误类型(分类)。

  • int code:NDB API 错误代码。

  • int mysql_code:MySQL 错误代码。

  • const char* message:错误消息。

  • char* details:错误详细信息消息。

    details 已弃用,并计划最终删除。您应该改为使用 Ndb::getNdbErrorDetail() 方法。(Bug #48851)

类型

NdbError 定义了此处列出的两种数据类型

NdbError::Classification

本节提供有关 Classification 数据类型的信息。

描述

此类型描述了错误的类型,或错误所属的逻辑组。

枚举值

下表显示了可能的价值观以及描述

表 2.40 NdbError Classification 数据类型值及其描述

名称 描述
NoError 表示成功(未发生错误)
ApplicationError 应用程序程序中发生了错误
NoDataFound 读取操作由于一个或多个记录丢失而失败。
ConstraintViolation 发生了约束违例,例如尝试插入一个元组,该元组的键值在目标表中已存在。
SchemaError 在尝试创建或使用表时发生了错误。
InsufficientSpace 数据或索引的内存不足。
TemporaryResourceError 通常在活动事务过多时遇到此类错误。
NodeRecoveryError 这是一个临时故障,可能是由正在进行的节点恢复引起的,例如,应用程序和 NDB 之间发送的信息丢失,或者发生了分布式更改。
OverloadError 这种类型的错误通常是由于日志文件空间不足造成的。
TimeoutExpired 超时,通常由死锁引起。
UnknownResultError 不知道事务是否已提交。
InternalError NDB 本身发生了严重错误。
FunctionNotImplemented 应用程序尝试使用尚未实现的功能。
UnknownErrorCode NDB 错误处理程序无法确定要报告的正确错误代码时,就会出现这种情况。
NodeShutdown 这是由节点关闭引起的。
SchemaObjectExists 应用程序尝试创建一个已存在的模式对象。
InternalTemporary 请求发送到主节点以外的节点。

有关特定错误条件的更多信息,请参见 第 2.4.2 节,“NDB 错误代码:按类型”,以及 第 2.4.4 节,“NDB 错误分类”

NdbError::Status

本节提供有关 Status 数据类型的信息。

描述

此类型用于描述错误的状态。

枚举值

下表显示了可能的价值观以及描述

表 2.41 NdbError Status 数据类型值及其描述

名称 描述
Success 没有发生错误
TemporaryError 一个临时且通常可恢复的错误;应用程序应重试导致错误的操作
PermanentError 永久性错误;不可恢复
UnknownResult 操作的结果或状态未知

有关某些错误条件的特定信息,请参阅第 2.4.4 节,“NDB 错误分类”