本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Amazon RDS Data API 進行故障診斷
使用下列標題為常見錯誤訊息的章節,協助您針對 Amazon RDS Data API (資料 API) 的問題進行故障診斷。
主題
找不到交易 <transaction_ID>
在此情況下,表示找不到資料 API 呼叫中指定的交易 ID。此問題的原因已附加至錯誤訊息中,且是下列其中一項:
-
Transaction may be expired
(交易可能已過期)。請確認每個交易呼叫都是在前一個呼叫後的三分鐘內執行。
指定的交易 ID 也可能不是由 BeginTransaction 呼叫所建立的。請確認您的呼叫具有效的交易 ID。
-
One previous call resulted in a termination of your transaction
(之前的一次呼叫導致您的交易終止)。該交易已由您的
CommitTransaction
或RollbackTransaction
呼叫終止。 -
Transaction has been aborted due to an error from a previous call
(由於前次呼叫的錯誤,交易已中止)。檢查您之前的呼叫是否發生任何異常。
如需執行交易的資訊,請參閱 呼叫 Amazon RDS Data API。
查詢封包過大
在這種情況下,表示為資料列傳回的結果集過大。針對資料庫傳回結果集中的每個資料列,資料 API 的大小上限為每個資料列 64 KB。
若要解決此問題,請確定結果集的每個資料列都是 64 KB 或更小。
資料庫回應超過大小上限
在這種情況下,表示資料庫傳回結果集的大小過大。針對資料庫傳回的結果集,資料 API 的大小上限為 1 MiB。
若要解決此問題,請確定對資料 API 的呼叫傳回 1 MiB 或更少的資料。若您需要傳回超過 1 MiB,您可以在查詢中搭配 LIMIT
子句使用多個 ExecuteStatement
呼叫。
如需 LIMIT
子句的詳細資訊,請參閱 MySQL 文件中的 SELECT 語法
叢集 <cluster_ID> 未啟用 HttpEndpoint
檢查此問題的下列潛在原因:
-
Aurora 資料庫叢集不支援資料 API。如需 RDS Data API 支援的資料庫叢集類型資訊,請參閱 Amazon RDS Data API 的區域和版本可用性。
-
Aurora 資料庫叢集未啟用資料 API。若要搭配 Aurora 資料庫叢集使用資料 API,必須為資料庫叢集啟用資料 API。如需啟用資料 API 的資訊,請參閱 啟用 Amazon RDS Data API。
-
資料庫叢集在啟用資料 API 之後重新命名。在這種情況下,請關閉該叢集的資料 API,然後再次啟用它。
-
您指定的 ARN 未精確地符合叢集的 ARN。檢查從其他來源傳回的 ARN 或由程序邏輯建置的 ARN 是否完全符合叢集的 ARN。例如,請確保您使用的 ARN 對於所有字母字元具有正確的字母大小寫。
DatabaseErrorException:交易仍在執行查詢
如果您的應用程式傳送具有交易 ID 的請求,且該交易目前正在處理另一個請求,則資料 API 會立即將此錯誤傳回給您的應用程式。如果您的應用程式使用 Javascript 中的「承諾」等機制提出非同步請求,則可能會出現此條件。
若要解決此問題,請等待先前的請求完成,然後重試請求。您可以繼續重試,直到不再發生錯誤,或應用程式收到某種不同類型的錯誤。
適用於 Aurora Serverless v2和佈建執行個體的資料 API 可能會發生此條件。在 的資料 API 中Aurora Serverless v1,相同交易 ID 的後續請求會自動等待先前的請求完成。不過,由於先前的請求耗時太久,較舊的行為可能會遇到逾時。如果您要移植提出並行請求的較舊資料 API 應用程式,請修改例外狀況處理邏輯,以考慮這種新的錯誤。
不支援的結果例外狀況
資料 API 不支援所有資料類型。當您執行傳回不支援資料類型的查詢時,會發生此錯誤。
若要解決此問題,請將不支援的資料類型轉換為 TEXT
。例如:
SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;
不支援多陳述式
Aurora Serverless v2 的資料 API 和佈建的叢集不支援多陳述式。嘗試在單一 API 呼叫中執行多個陳述式會導致此錯誤。
若要執行多個陳述式,請使用個別的 ExecuteStatement
API 呼叫或使用 BatchExecuteStatement
API 進行批次處理。
不支援結構描述參數
Aurora Serverless v1 無提示地忽略結構描述參數。不過,Aurora Serverless v2 和佈建叢集會明確拒絕包含結構描述參數的 API 呼叫。
若要解決此問題,請在使用 Aurora Serverless v2 或佈建叢集時,從對資料 API 的所有呼叫中移除結構描述參數。