

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 图形引擎错误消息和代码
<a name="errors-engine-codes"></a>

在遇到时，Amazon Neptune 端点返回 Gremlin 和 SPARQL 的标准错误。

也可以从同一个端点返回特定于 Neptune 的错误。本节介绍 Neptune 错误消息、代码和建议的操作。

**注意**  
这些错误仅针对 Neptune 数据库集群端点。 APIs 用于使用 AWS SDK 创建和修改 Neptune 资源， AWS CLI 但存在一组不同的常见错误。有关这些错误的更多信息，请参阅[数据库集群管理 API 错误消息和代码](CommonErrors.md)。

## 图形引擎错误格式
<a name="errors-format"></a>

Neptune 错误消息返回相关的 HTTP 错误代码和 JSON 格式的响应。

```
HTTP/1.1 400 Bad Request
x-amzn-RequestId: LDM6CJP8RMQ1FHKSC1RBVJFPNVV4KQNSO5AEMF66Q9ASUAAJG
Content-Type: application/x-amz-json-1.0
Content-Length: 465
Date: Thu, 15 Mar 2017 23:56:23 GMT

{
    "requestId": "{{0dbcded3-a9a1-4a25-b419-828c46342e47}}",
    "code": "{{ReadOnlyViolationException}}",
    "detailedMessage": "{{The request is rejected because it violates some read-only restriction, such as a designation of a replica as read-only.}}"
}
```

## 图形引擎查询错误
<a name="errors-query"></a>

下表包含错误代码、消息和 HTTP 状态。

它还指示是否可以重试请求。一般而言，如果在新尝试中请求可能成功，则可以重试请求。


| Neptune 服务错误代码 | HTTP 状态 | 可以重试？ | Message | 
| --- |--- |--- |--- |
| AccessDeniedException | 403 | 否 | 身份验证或授权失败。 | 
| BadRequestException | 400 | 否 | 无法完成请求。 | 
| BadRequestException | 400 | 否 | 请求大小超出允许的最大值 157286400 字节。 | 
| CancelledByUserException | 500 | 是 | 经授权的客户端取消了请求处理。 | 
| ConcurrentModificationException | 500 | 是 | 由于修改冲突，请求处理未成功。客户端应重试请求。 | 
| ConstraintViolationException | 400 | 是 | 在请求执行期间，查询引擎发现必须要违反某些数据完整性约束（例如，添加边缘时，内顶点和外顶点的持久性）才可能完成某个操作。在对图形进行并行修改时，通常会看到此类情况，而且是临时性的。客户端应重试请求。 | 
| FailureByQueryException  | 500 | 是 | 调用fail()导致请求处理失败。假设查询中的逻辑在以后的尝试中预期会成功，则客户端可以重试请求。因此，重试的选择将因查询而异。 | 
| InternalFailureException | 500 | 否 | 请求处理失败。 | 
| InvalidNumericDataException | 400 | 否 | 使用无法以 64 位存储大小表示的数字数据无效。 | 
| InvalidParameterException | 400 | 否 | 在提供的 RDF 文件中，为某些输入参数或无效语法提供了无效的或 out-of-range值。 | 
| MalformedQueryException | 400 | 否 | 由于请求中包含语法错误的查询或者未通过额外验证，请求被拒绝。 | 
| MemoryLimitExceededException | 500 | 是 | 由于缺少内存，请求不成功，但可在服务器较不忙时重试。 | 
| MethodNotAllowedException | 405 | 否 | 由于使用的终端节点不支持所选 HTTP 方法，请求被拒绝。 | 
| MissingParameterException | 400 | 否 | 未提供用于指定操作的必需参数。 | 
| QueryLimitExceededException | 500 | 是 | 由于缺少有限的资源，请求处理未成功，但可在服务器不太忙时重试。 | 
| QueryLimitException | 400 | 否 | 查询大小超出系统限制。 | 
| QueryTooLargeException | 400 | 否 | 由于正文太大，拒绝了请求。 | 
| ReadOnlyViolationException | 400 | 否 | 由于请求违反了某个只读限制，例如将副本指定为只读，请求被拒绝。 | 
| ThrottlingException | 500 | 是 | 请求速率超出吞吐量上限。OK to retry。 | 
| TimeLimitExceededException | 500 | 也许 | 请求处理超时。 | 
| TooManyRequestsException | 429 | 是 | 请求速率超过最大吞吐量。OK to retry。 | 
| UnsupportedOperationException | 400 | 否 | 请求使用了当前不支持的功能或构造。 | 

**重要**  
是否重试错误通常涉及与故障性质、工作负载和您观察到的错误模式有关的重要细微差别。有关制定实用重试策略的详细指导，请参阅[异常处理和重试](transactions-exceptions.md)。

## IAM 身份验证错误
<a name="errors-iam-auth"></a>

这些错误特定于已启用 IAM 身份验证的集群。

下表包含错误代码、消息和 HTTP 状态。


| Neptune 服务错误代码 | HTTP 状态 | Message | 
| --- |--- |--- |
| IAM 用户/策略不正确 | 403 | 您没有足够的访问权限，无法执行该操作。 | 
| 区域不正确或缺失 | 403 | 证书的范围应限于有效的区域，而不是 “” {{region}}。 | 
| 服务名称不正确或缺失 | 403 | 凭证应当局限于正确的服务：“neptune-db”。 | 
| 主机标头不正确或缺失/签名无效 | 403 | 我们计算出的请求签名与您提供的签名不匹配。检查您的 AWS 私有访问密钥和签名方法。有关详细信息，请参阅服务文档。主机标头缺失或主机名不正确。 | 
| 缺少 X-Amz-Security-Token | 403 | “x-amz-security-token”被指定作为 SignedHeader，但在 HTTP 请求中不存在 | 
| Authorization 标头缺失 | 403 | 请求未包含所需的授权标头，或请求的格式不正确。 | 
| 身份验证令牌缺失 | 403 | 身份验证令牌缺失。 | 
| 旧日期 | 403 | 签名已过期：{{20181011T213907Z}}现在早于 {{20181011T213915Z}} ({{20181011T214415Z}}-{{5 min}}.) | 
| 未来日期 | 403 | 签名尚未{{20500224T213559Z}}最新：仍晚于 {{20181108T225925Z}} ({{20181108T225425Z}}\+{{5 min}}.) | 
| 日期格式不正确 | 403 | 日期必须采用 ISO-8601“基本格式”。明白了 {{date}} “”。请参阅[https://en.wikipedia.org/wiki/ISO_8601](https://en.wikipedia.org/wiki/ISO_8601)。 | 
| 访问密钥或会话令牌未知/缺失 | 403 | 请求中包含的安全令牌无效。 | 
| 私有密钥未知/缺失 | 403 | 我们计算出的请求签名与您提供的签名不匹配。检查您的 AWS 私有访问密钥和签名方法。有关详细信息，请参阅服务文档。主机标头缺失或主机名不正确。 | 
| TooManyRequestsException | 429 | 请求速率超过最大吞吐量。OK to retry。 | 