

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

# Neptune openCypher 异常
<a name="access-graph-opencypher-exceptions"></a>

在 Amazon Neptune 上使用 openCypher 时，可能会出现各种异常。以下是您可能收到的来自 HTTPS 端点或 Bolt 驱动程序的常见异常（Bolt 驱动程序中的所有异常都报告为服务器状态异常）：


| HTTP 代码 | 错误消息 | 是否可检索？ | 补救措施 | 
| --- | --- | --- | --- | 
| 400 | *（语法错误，直接从 openCypher 解析器传播）* | 否 | 请更正查询语法，然后重试。 | 
| 500 | `Operation terminated (out of memory)` | 是 | 重新处理查询以添加其它筛选条件来减少所需的内存 | 
| 500 | 操作已终止（超过截止日期） | 是 | 增加数据库集群参数组中的查询超时，或者[重试请求](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)。 | 
| 500 | 操作已终止（被用户取消） | 是 | 重试请求。 | 
| 500 | 数据库重置正在进行中。请在集群可用后重试查询。 | 是 | 重置完成后重试。 | 
| 500 | 由于并发操作冲突，操作失败（请重试）。事务目前正在回滚。 | 是 | 使用[指数回退和重试策略](best-practices-opencypher-retry-logic.md)重试。 | 
| 400 | *(operation name)* operation/feature 不支持的异常 | 否 | 不支持指定的操作。 | 
| 400 | 已尝试在只读副本上更新 openCypher | 否 | 将目标端点更改为写入器端点。 | 
| 400 | MalformedQueryException （Neptune 不显示内部解析器状态） | 否 | 请更正查询语法并重试。 | 
| 400 | 无法删除节点，因为它仍然具有关系。要删除此节点，必须先删除其关系。 | 否 | 不使用 `MATCH (n) DELETE n`，而是使用 `MATCH(n) DETACH DELETE(n)` | 
| 400 | 操作无效：正在尝试移除节点的最后一个标签。节点必须具有至少一个标签。 | 否 | Neptune 要求所有节点至少有一个标签，如果创建的节点没有显式标签，则会分配默认标签 `vertex`。更改查询 and/or 应用程序逻辑，以免删除最后一个标签。可以通过设置新标签然后删除旧标签，更新节点的单例标签。 | 
| 500 | 已违规请求的最大数量， ConfiguredQueueCapacity= \$1\$1 for connID = \$1\$1 | 是 | 目前，无论堆栈和协议如何，只能处理 8192 个并发请求。 | 
| 500 | 突破最大连接限制。 | 是 | 每个实例只允许 1000 个并发 Bolt 连接（对于 HTTP 没有限制）。 | 
| 400 | 应为 [节点、关系或路径之一]，而得到的是文本 | 否 | 请检查您传递的参数是否正确，查询语法是否正确，然后重试。 | 
| 400 | 属性值必须是简单的文本。或：需要 Set 属性的映射，但找不到。 | 否 | SET 子句只接受简单文本，不接受复合类型。 | 
| 400 | 找不到已传递的供删除的实体 | 否 | 检查数据库中是否存在您尝试删除的实体。 | 
| 400 | 用户无权访问数据库。 | 否 | 查看有关正在使用的 IAM 角色的策略。 | 
| 400 | 没有作为请求的一部分传递的令牌 | 否 | 在启用 IAM 的集群上，必须将经过正确签名的令牌作为查询请求的一部分传递。 | 
| 400 | 错误消息已传播。 | 否 | 使用请求编号与 Support 联系 AWS 。 | 
| 500 | 操作已终止（内部错误） | 是 | 使用请求编号与 Support 联系 AWS 。 | 