此部分提供有关
NdbError数据结构的信息,其中包含有关错误的状态和其他信息,包括错误代码、分类和消息。
- 描述
-
一个
NdbError由六个部分组成,列在此处,其中一个已弃用:-
错误状态:描述了错误对应用的影响,反映了应用遇到错误时应该做什么。
错误状态由
Status类型的值描述。请参阅 NdbError::Status,了解可能的Status值以及应如何解释它们。 -
错误分类由
Classification类型的值描述。请参阅 NdbError::Classification,了解可能的分类及其解释。其他信息在 第 2.4.4 节“NDB 错误分类”中提供。 -
错误代码:这是唯一标识错误的 NDB API 内部错误代码。
重要的不建议编写依赖特定错误代码的应用程序。相反,应用程序应该检查错误状态和分类。还可以通过检查错误消息和(如果可用)错误详细消息来获取有关错误的更多信息。但是,与错误代码一样,这些错误消息和错误详细消息可能会发生变化。
第 2.4.2 节“NDB 错误代码:按类型” 中提供了按分类细分的当前错误代码列表 。此列表随新的 NDB Cluster 版本更新。您还可以检查
storage/ndb/src/ndbapi/ndberror.cNDB Cluster 源中的文件。 MySQL 错误代码:这是对应的 MySQL 服务器错误代码。本文档不讨论 MySQL 错误代码;有关这些的信息, 请参阅 MySQL 手册中的服务器错误消息参考。
-
错误详细信息:这通常可以提供有关错误的附加信息(未在错误消息中找到),特定于遇到错误的情况。但是,它并非在所有情况下都可用。
如果未指定,则错误详细消息为
NULL。笔记此属性已弃用并计划最终删除。要获取错误详细信息,您应该改用
Ndb::getNdbErrorDetail()方法。
特定的 NDB API 错误代码、消息和详细消息如有更改,恕不另行通知。
-
- 定义
-
该
NdbError结构包含以下成员,其类型如下所示:Status status: 错误状态。Classification classification:错误类型(分类)。int code: NDB API 错误代码。int mysql_code: MySQL错误代码。const char* message: 错误信息。-
char* details: 错误详细信息。details已弃用并计划最终删除。您应该改用该Ndb::getNdbErrorDetail()方法。(漏洞 #48851)
- 类型
-
NdbError定义此处列出的两种数据类型:Classification:错误的类型或错误所属的逻辑分组。Status: 错误状态。
本节提供有关
Classification数据类型的信息。
- 描述
这种类型描述了错误的类型,或者它所属的逻辑组。
- 枚举值
-
下表显示了可能的值以及说明:
表 2.39 NdbError 分类数据类型值和描述
姓名 描述 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 错误分类”中找到。
本节提供有关
Status数据类型的信息。
- 描述
此类型用于描述错误的状态。
- 枚举值
-
下表显示了可能的值以及说明:
表 2.40 NdbError Status 数据类型值和描述
姓名 描述 Success没有发生错误 TemporaryError暂时的且通常可恢复的错误;应用程序应该重试导致错误的操作 PermanentError永久错误;无法恢复 UnknownResult操作的结果或状态未知 可以在第 2.4.4 节“NDB 错误分类”中找到特定于某些错误条件的相关信息。