Amazon RDS 数据 API 故障排除
使用以下部分(标题为常见错误消息)帮助解决 Amazon RDS 数据 API(数据 API)问题。
主题
未找到事务 <transaction_ID>
在此情况下,找不到 Data API 调用中指定的事务 ID。错误消息提供了导致此问题的原因,是以下原因之一:
-
事务可能已过期。
确保每个事务调用在上一个事务调用之后的 3 分钟内运行。
也可能是指定的事务 ID 不是由 BeginTransaction 调用创建的。确保您的调用具有有效的事务 ID。
-
之前的一次调用导致您的事务终止。
交易已经由您的
CommitTransaction
或者RollbackTransaction
调用。 -
由于之前的调用发生错误,事务已中止。
检查您之前的电话是否引发了任何异常。
有关运行事务的信息,请参阅调用 Amazon RDS 数据 API。
用于查询的包太大
在此情况下,为行返回的结果集太大。数据库返回的结果集中的 Data API 大小限制为每行 64 KB。
要解决此问题,请确保结果集中的每一行都小于或等于 64 KB。
数据库响应超出大小限制
在此情况下,数据库返回的结果集太大。数据库返回的结果集中的 Data API 限制为 1MiB。
要解决此问题,请确保对数据 API 的调用返回 1MiB 或更少数据。如果需要返回 1MiB 以上的数据,您可以在查询中将多个 ExecuteStatement
调用与 LIMIT
子句结合使用。
有关 LIMIT
子句的更多信息,请参阅 MySQL 文档中的 SELECT 语法
没有为集群 <cluster_ID> 启用 HttpEndpoint
请查看以下可能导致该问题的原因:
-
Aurora 数据库集群不支持数据 API。有关 RDS 数据 API 支持的数据库集群类型的信息,请参阅Amazon RDS 数据 API 的区域和版本可用性。
-
未为 Aurora 数据库集群启用数据 API。要将数据 API 与 Aurora 数据库集群结合使用,必须为该数据库集群启用数据 API。有关启用数据 API 的信息,请参阅启用 Amazon RDS 数据 API。
-
在为数据库集群启用数据 API 之后,已重命名该数据库集群。在这种情况下,请关闭该集群的数据 API,然后再次启用它。
-
您指定的 ARN 与集群的 ARN 不完全匹配。请检查从另一个源返回的 ARN 或由程序逻辑构造的 ARN 是否与集群的 ARN 完全匹配。例如,请确保您使用的 ARN 的所有字母字符的大小写正确。
DatabaseErrorException:事务仍在运行查询
如果您的应用程序发送了带有事务 ID 的请求,而该事务当前正在处理另一个请求,则 Data API 会立即将此错误返回给您的应用程序。如果您的应用程序使用诸如 Javascript 中的“promises”之类的机制发出异步请求,则可能会出现这种情况。
要解决此问题,请等到上一个请求完成,然后重试该请求。您可以继续重试,直到错误不再出现,或者应用程序收到其他类型的错误。
这种情况可能发生在 Aurora Serverless v2 的 Data API 和预配置实例中。在 Aurora Serverless v1 的 Data API 中,对同一事务 ID 的后续请求会自动等待上一个请求完成。但是,由于之前的请求花费了太长时间,这种过时的行为可能会出现超时。如果您要移植发出并发请求的过时 Data 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 的所有调用中移除架构参数。