

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 | *(操作名稱)* 操作/功能不受支援例外狀況 | 否 | 不支援指定的操作。 | 
| 400 | 已嘗試在唯讀複本上進行 openCypher 更新 | 否 | 將目標端點變更為寫入器端點。 | 
| 400 | MalformedQueryException (Neptune 不會顯示內部剖析器狀態) | 否 | 更正查詢語法，然後再試一次。 | 
| 400 | 無法刪除節點，因為它仍然具有關係。若要刪除此節點，您必須先刪除其關係。 | 否 | 請使用 `MATCH(n) DETACH DELETE(n)`，而不是使用 `MATCH (n) DELETE n` | 
| 400 | 無效的操作：正在嘗試移除節點的最後一個標籤。一個節點必須至少具有一個標籤。 | 否 | Neptune 要求所有節點至少有一個標籤，如果節點建立時沒有用標籤明確標示，則會指派預設標籤 `vertex`。變更查詢和/或應用程式邏輯，以免刪除最後一個標籤。節點的單例標籤可以透過設定新標籤並刪除舊標籤予以更新。 | 
| 500 | 已違反請求數目上限，connId = \$1\$1 的 ConfiguredQueueCapacity=\$1\$1 | 是 | 無論堆疊和通訊協定為何，目前都只能處理 8,192 個並行請求。 | 
| 500 | 已違反最大連線限制。 | 是 | 只允許每個執行個體 1000 個並行 Bolt 連線 (對於 HTTP 沒有限制)。 | 
| 400 | 預期 [其中一個：節點、關係或路徑]，卻得到常值 | 否 | 檢查您是否正在傳遞正確的參數、更正查詢語法，然後再試一次。 | 
| 400 | 屬性值必須是簡單的常值。或者：預期 Set 屬性的映射，但找不到一個。 | 否 | SET 子句只接受簡單常數，不接受複合類型。 | 
| 400 | 找不到傳遞的實體進行刪除 | 否 | 檢查您正在嘗試刪除的實體是否存在於資料庫中。 | 
| 400 | 使用者沒有資料庫的存取權。 | 否 | 檢查正在使用的 IAM 角色的政策。 | 
| 400 | 沒有權杖做為請求的一部分傳遞 | 否 | 在啟用 IAM 的叢集上，必須將正確簽署的權杖做為查詢請求的一部分傳遞。 | 
| 400 | 傳播錯誤訊息。 | 否 | 使用請求 ID 聯絡 AWS 支援。 | 
| 500 | 操作已終止 (內部錯誤) | 是 | 使用請求 ID 聯絡 AWS 支援。 | 