針對 Amazon RDS 資料 API 進行疑難排解 - Amazon Aurora

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

針對 Amazon RDS 資料 API 進行疑難排解

請使用下列標題包含常見錯誤訊息的章節,協助針對您在使用 Amazon RDS 資料 API (資料 API) 時所發生的問題進行疑難排解。

找不到交易 <transaction_ID>

在此情況下,表示找不到資料 API 呼叫中指定的交易 ID。此問題的原因已附加至錯誤訊息中,且是下列其中一項:

  • Transaction may be expired (交易可能已過期)。

    請確認每個交易呼叫都是在前一個呼叫後的三分鐘內執行。

    指定的交易 ID 也可能不是由 BeginTransaction 呼叫所建立的。請確認您的呼叫具有效的交易 ID。

  • One previous call resulted in a termination of your transaction (之前的一次呼叫導致您的交易終止)。

    該交易已由您的 CommitTransactionRollbackTransaction 呼叫終止。

  • Transaction has been aborted due to an error from a previous call (由於前次呼叫的錯誤,交易已中止)。

    檢查您之前的呼叫是否發生任何異常。

如需執行交易的資訊,請參閱 呼叫 Amazon RDS 資料 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 資料 API 支援的資料庫叢集類型的相關資訊,請參閱 Amazon RDS 資料 API 的區域和版本可用性

  • Aurora 資料庫叢集並未啟用資料 API。若要搭配 Aurora 資料庫叢集使用資料 API,您必須為資料庫叢集啟用資料 API。如需啟用資料 API 的資訊,請參閱啟用 Amazon RDS 資料 API

  • 資料庫叢集已在為其啟用資料 API 後重新命名。在這種情況下,請關閉該叢集的資料 API,然後再次將其啟用。

  • 您指定的 ARN 未精確地符合叢集的 ARN。檢查從其他來源傳回的 ARN 或由程序邏輯建置的 ARN 是否完全符合叢集的 ARN。例如,請確保您使用的 ARN 對於所有字母字元具有正確的字母大小寫。

DatabaseErrorException:交易仍在執行查詢

如果應用程式傳送具有交易 ID 的請求,且該交易目前正在處理另一個請求,資料 API 會立即將此錯誤傳回給應用程式。如果應用程式使用 Javascript 中的「承諾」等機制提出異步請求,則可能會出現此情況。

若要解決此問題,請等待先前的請求完成,然後重試請求。您可以繼續重試,直到不再發生錯誤,或應用程式收到某種不同類型的錯誤。

適用於 Aurora Serverless v2 和佈建執行個體的資料 API 可能會發生此情況。在 Aurora Serverless v1 的資料 API 中,相同交易 ID 的後續請求會自動等待先前的請求完成。不過,由於先前的請求耗時太久,較舊的行為可能會遇到逾時。如果您要移植較舊資料 API 應用程式,且這類應用程式會提出並行請求,請修改例外狀況處理邏輯,以應對這種新的錯誤。

不支援的結果例外狀況

資料 API 不支援所有資料類型。當您執行的是傳回不支援資料類型的查詢時,就會發生此錯誤。

若要解決此問題,請將不支援的資料類型轉換為 TEXT。例如:

SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;

不支援多陳述式

Aurora Serverless 第 2 版和佈建叢集的資料 API 不支援多陳述式。嘗試在單一 API 呼叫中執行多個陳述式會導致此錯誤。

若要執行多個陳述式,請使用個別的 ExecuteStatement API 呼叫或使用 BatchExecuteStatement API 進行批次處理。

不支援結構描述參數

Aurora Serverless 第 1 版以無提示的方式忽略結構描述參數。不過,Aurora Serverless 第 2 版和佈建叢集會明確拒絕內含結構描述參數的 API 呼叫。

若要解決此問題,請在使用 Aurora Serverless 第 2 版或佈建叢集時,從對資料 API 的所有呼叫中移除結構描述參數。

IPv6 連線問題

如果您在使用 IPv6 端點連線至資料 API 時遇到問題,請確認下列潛在原因:

  • 網路不支援 IPv6:確認網路基礎設施支援 IPv6,且 IPv6 路由的設定都正確。

  • DNS 解析問題:確保 DNS 解析程式可以解析雙堆疊端點的 AAAA 記錄 (例如 rds-data.us-east-1.api.aws)。

  • 安全群組組態:更新安全群組規則,以允許連接埠 443 (HTTPS) 上的 IPv6 流量。新增 IPv6 CIDR 區塊的規則 (例如,所有 IPv6 地址的 ::/0)。

  • 網路 ACL 組態:確保網路 ACL 允許必要連接埠上的 IPv6 流量。

  • 用戶端程式庫相容性:確認您的 HTTP 用戶端程式庫和 AWS SDKs支援 IPv6 和雙堆疊連線。

  • VPC 端點組態:如果使用的是 PrivateLink,請確定 VPC 端點已設定為支援 IPv6,且相關聯的子網路已指派 IPv6 CIDR 區塊。

若要針對 IPv6 連線問題進行疑難排解:

  1. 使用僅 IPv4 端點 (.amazonaws.com) 測試連線,以確認問題是否僅限於 IPv6。

  2. 使用網路診斷工具,來驗證雙堆疊端點的 IPv6 連線。

  3. 使用 IPv6 端點時,請確認 CloudTrail 日誌是否有任何身分驗證或授權錯誤。

  4. 確認應用程式已正確設定為使用新的雙堆疊端點 URL。