

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

# 針對 Amazon RDS 資料 API 進行疑難排解
<a name="data-api.troubleshooting"></a>

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

**Topics**
+ [找不到交易 <transaction\$1ID>](#data-api.troubleshooting.tran-id-not-found)
+ [查詢封包過大](#data-api.troubleshooting.packet-too-large)
+ [資料庫回應超過大小上限](#data-api.troubleshooting.response-size-too-large)
+ [叢集 <cluster\$1ID> 並未啟用 HttpEndpoint](#data-api.troubleshooting.http-endpoint-not-enabled)
+ [DatabaseErrorException：交易仍在執行查詢](#data-api.troubleshooting.txn-concurrent-requests-rejected)
+ [不支援的結果例外狀況](#data-api.troubleshooting.unsupported-result)
+ [不支援多陳述式](#data-api.troubleshooting.multi-statements)
+ [不支援結構描述參數](#data-api.troubleshooting.schema-parameter)
+ [IPv6 連線問題](#data-api.troubleshooting.ipv6-connectivity)

## 找不到交易 <transaction\$1ID>
<a name="data-api.troubleshooting.tran-id-not-found"></a>

在此情況下，表示找不到資料 API 呼叫中指定的交易 ID。此問題的原因已附加至錯誤訊息中，且是下列其中一項：
+ Transaction may be expired (交易可能已過期)。

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

  指定的交易 ID 也可能不是由 [BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html) 呼叫所建立的。請確認您的呼叫具有效的交易 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 資料 API](data-api.calling.md)。

## 查詢封包過大
<a name="data-api.troubleshooting.packet-too-large"></a>

在這種情況下，表示為資料列傳回的結果集過大。針對資料庫傳回結果集中的每個資料列，資料 API 的大小上限為每個資料列 64 KB。

若要解決此問題，請確定結果集的每個資料列都是 64 KB 或更小。

## 資料庫回應超過大小上限
<a name="data-api.troubleshooting.response-size-too-large"></a>

在這種情況下，表示資料庫傳回結果集的大小過大。針對資料庫傳回的結果集，資料 API 的大小上限為 1 MiB。

若要解決此問題，請確認對資料 API 呼叫傳回的資料小於或等於 1 MiB。若您需要傳回超過 1 MiB，您可以在查詢中搭配 `LIMIT` 子句使用多個 [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html) 呼叫。

如需 `LIMIT` 子句的詳細資訊，請參閱 MySQL 文件中的 [SELECT 語法](https://dev.mysql.com/doc/refman/8.0/en/select.html)。

## 叢集 <cluster\$1ID> 並未啟用 HttpEndpoint
<a name="data-api.troubleshooting.http-endpoint-not-enabled"></a>

檢查此問題的下列潛在原因：
+ Aurora 資料庫叢集不支援資料 API。如需有關 RDS 資料 API 支援的資料庫叢集類型的相關資訊，請參閱 [Amazon RDS 資料 API 的區域和版本可用性](data-api.regions.md)。
+ Aurora 資料庫叢集並未啟用資料 API。若要搭配 Aurora 資料庫叢集使用資料 API，您必須為資料庫叢集啟用資料 API。如需啟用資料 API 的資訊，請參閱[啟用 Amazon RDS 資料 API](data-api.enabling.md)。
+ 資料庫叢集已在為其啟用資料 API 後重新命名。在這種情況下，請關閉該叢集的資料 API，然後再次將其啟用。
+ 您指定的 ARN 未精確地符合叢集的 ARN。檢查從其他來源傳回的 ARN 或由程序邏輯建置的 ARN 是否完全符合叢集的 ARN。例如，請確保您使用的 ARN 對於所有字母字元具有正確的字母大小寫。

## DatabaseErrorException：交易仍在執行查詢
<a name="data-api.troubleshooting.txn-concurrent-requests-rejected"></a>

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

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

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

## 不支援的結果例外狀況
<a name="data-api.troubleshooting.unsupported-result"></a>

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

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

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

## 不支援多陳述式
<a name="data-api.troubleshooting.multi-statements"></a>

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

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

## 不支援結構描述參數
<a name="data-api.troubleshooting.schema-parameter"></a>

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

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

## IPv6 連線問題
<a name="data-api.troubleshooting.ipv6-connectivity"></a>

如果您在使用 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。

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

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

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