

# 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>

在此情况下，找不到 Data API 调用中指定的事务 ID。错误消息提供了导致此问题的原因，是以下原因之一：
+ 事务可能已过期。

  确保每个事务调用在上一个事务调用之后的 3 分钟内运行。

  也可能是指定的事务 ID 不是由 [BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html) 调用创建的。确保您的调用具有有效的事务 ID。
+ 之前的一次调用导致您的事务终止。

  交易已经由您的`CommitTransaction`或者`RollbackTransaction`调用。
+ 由于之前的调用发生错误，事务已中止。

  检查您之前的电话是否引发了任何异常。

有关运行事务的信息，请参阅[调用 Amazon RDS 数据 API](data-api.calling.md)。

## 用于查询的包太大
<a name="data-api.troubleshooting.packet-too-large"></a>

在此情况下，为行返回的结果集太大。数据库返回的结果集中的 Data API 大小限制为每行 64 KB。

要解决此问题，请确保结果集中的每一行都小于或等于 64 KB。

## 数据库响应超出大小限制
<a name="data-api.troubleshooting.response-size-too-large"></a>

在此情况下，数据库返回的结果集太大。数据库返回的结果集中的 Data API 限制为 1MiB。

要解决此问题，请确保对数据 API 的调用返回 1MiB 或更少数据。如果需要返回 1MiB 以上的数据，您可以在查询中将多个 [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html) 调用与 `LIMIT` 子句结合使用。

有关 `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。要将数据 API 与 Aurora 数据库集群结合使用，必须为该数据库集群启用数据 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 的请求，而该事务当前正在处理另一个请求，则 Data API 会立即将此错误返回给您的应用程序。如果您的应用程序使用诸如 Javascript 中的“promises”之类的机制发出异步请求，则可能会出现这种情况。

 要解决此问题，请等到上一个请求完成，然后重试该请求。您可以继续重试，直到错误不再出现，或者应用程序收到其他类型的错误。

 这种情况可能发生在 Aurora Serverless v2 的 Data API 和预配置实例中。在 Aurora Serverless v1 的 Data API 中，对同一事务 ID 的后续请求会自动等待上一个请求完成。但是，由于之前的请求花费了太长时间，这种过时的行为可能会出现超时。如果您要移植发出并发请求的过时 Data 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 v2 和预置集群的数据 API 不支持多语句。尝试在单个 API 调用中执行多条语句会导致此错误。

要执行多条语句，请使用单独的 `ExecuteStatement` API 调用或使用 `BatchExecuteStatement` API 进行批处理。

## 不支持架构参数
<a name="data-api.troubleshooting.schema-parameter"></a>

Aurora Serverless v1 会静默忽略架构参数。但是，Aurora Serverless v2 和预置集群会显式拒绝包含架构参数的 API 调用。

要解决此问题，请在使用 Aurora Serverless v2 或预置集群时，从对数据 API 的所有调用中移除架构参数。

## IPv6 连接问题
<a name="data-api.troubleshooting.ipv6-connectivity"></a>

如果您在使用 IPv6 端点连接到 Data API 时遇到问题，请检查以下潜在原因：
+ **网络不支持 IPv6**：确认您的网络基础设施支持 IPv6，并且 IPv6 路由配置正确。
+ **DNS 解析问题**：确保您的 DNS 解析器可以解析双栈端点（例如 `rds-data.us-east-1.api.aws`）的 AAAA 记录。
+ **安全组配置**：更新安全组规则以允许端口 443（HTTPS）上的 IPv6 流量。为 IPv6 CIDR 数据块添加规则（例如，`::/0` 表示所有 IPv6 地址）。
+ **网络 ACL 配置**：确保网络 ACL 允许 IPv6 流量通过所需的端口。
+ **客户端库兼容性**：确认您的 HTTP 客户端库和 AWS SDK 支持 IPv6 和双栈连接。
+ **VPC 端点配置**：如果使用 PrivateLink，请确保将您的 VPC 端点配置为支持 IPv6，并且关联的子网已分配 IPv6 CIDR 数据块。

要对 IPv6 连接问题进行故障排除，请执行以下操作：

1. 使用仅限 IPv4 的端点（`.amazonaws.com`）测试连接，以验证问题是否特定于 IPv6。

1. 使用网络诊断工具验证 IPv6 与双栈端点的连接。

1. 使用 IPv6 端点时，请查看 CloudTrail 日志中是否存在任何身份验证或授权错误。

1. 验证您的应用程序是否已正确配置为使用新的双栈端点 URL。