排查 Aurora DSQL 中的问题 - Amazon Aurora DSQL

排查 Aurora DSQL 中的问题

注意

以下主题为您在使用 Aurora DSQL 时可能遇到的错误和问题提供故障排除建议。如果您发现某个问题未在此处列出,请联系 AWS 支持人员

连接错误故障排除

error: unrecognized SSL error code: 6

原因:可能您使用的 psql 版本早于 version 14,不支持服务器名称指示(SNI)。连接到 Aurora DSQL 时需要 SNI。

您可以使用 psql --version 来检查客户端版本。

error: NetworkUnreachable

尝试连接时出现 NetworkUnreachable 错误可能表示客户端不支持 IPv6 连接,而不是表示存在实际的网络问题。此错误通常发生在仅限 IPv4 的实例上,这是因为 PostgreSQL 客户端处理双堆栈连接的方式所致。当服务器支持双堆栈模式时,这些客户端首先将主机名解析为 IPv4 和 IPv6 地址。它们首先尝试 IPv4 连接,如果初始连接失败,则尝试 IPv6。如果系统不支持 IPv6,您将看到一条常规 NetworkUnreachable 错误,而不是一条明确的“IPv6 not supported”消息。

身份验证错误故障排除

IAM authentication failed for user "..."

在生成 Aurora DSQL IAM 身份验证令牌时,您可以设置的最长持续时间为 1 周。一周后,您将无法使用该令牌进行身份验证。

此外,如果您代入的角色已过期,Aurora DSQL 会拒绝您的连接请求。例如,如果您尝试使用临时 IAM 角色进行连接,即使您的身份验证令牌尚未过期,Aurora DSQL 也将拒绝连接请求。

要了解 IAM 如何与 Aurora DSQL 结合使用的更多信息,请参阅了解 Aurora DSQL 的身份验证和授权Aurora DSQL 中的 AWS Identity and Access Management

An error occurred (InvalidAccessKeyId) when calling the GetObject operation: The AWS Access Key ID you provided does not exist in our records

IAM 拒绝了您的请求。有关更多信息,请参阅为什么签署请求

IAM role <role> does not exist

Aurora DSQL 找不到您的 IAM 角色。有关更多信息,请参阅 IAM 角色

IAM role must look like an IAM ARN

有关更多信息,请参阅 IAM 标识符 - IAM ARN

授权错误故障排除

Role <role> not supported

Aurora DSQL 不支持 GRANT 操作。请参阅 Aurora DSQL 中支持的 PostgreSQL 命令子集

Cannot establish trust with role <role>

Aurora DSQL 不支持 GRANT 操作。请参阅 Aurora DSQL 中支持的 PostgreSQL 命令子集

Role <role> does not exist

Aurora DSQL 找不到指定的数据库用户。请参阅授权自定义数据库角色连接到集群

ERROR: permission denied to grant IAM trust with role <role>

要向数据库角色授予访问权限,您必须使用管理员角色连接到集群。要了解更多信息,请参阅授权数据库角色在数据库中使用 SQL

ERROR: role <role> must have the LOGIN attribute

您创建的任何数据库角色都必须具有 LOGIN 权限。

要解决此问题,请确保您已创建具有 LOGIN 权限的 PostgreSQL 角色。有关更多信息,请参阅 PostgreSQL 文档中的 CREATE ROLEALTER ROLE

ERROR: role <role> cannot be dropped because some objects depend on it

如果您删除具有 IAM 关系的数据库角色,Aurora DSQL 会返回错误,直到您使用 AWS IAM REVOKE 撤销该关系。要了解更多信息,请参阅撤销授权

SQL 错误故障排除

Error: Not supported

Aurora DSQL 并不支持所有基于 PostgreSQL 的方言。要了解支持的内容,请参阅 Aurora DSQL 中支持的 PostgreSQL 功能

Error: SELECT FOR UPDATE in a read-only transaction is a no-op

您正在尝试只读事务中不支持的操作。要了解更多信息,请参阅了解 Aurora DSQL 中的并发控制

Error: use CREATE INDEX ASYNC instead

要在包含现有行的表上创建索引,必须使用 CREATE INDEX ASYNC 命令。要了解更多信息,请参阅在 Aurora DSQL 中异步创建索引

OCC 错误故障排除

OC000 “ERROR: mutation conflicts with another transaction, retry as needed”

OC001 “ERROR: schema has been updated by another transaction, retry as needed”

您的 PostgreSQL 会话具有架构目录的一个缓存副本。该缓存副本在加载时是有效的。我们称为时间 T1 和版本 V1。

另一个事务在时间 T2 更新目录。我们称之为 V2。

当原始会话在时间 T2 尝试从存储中读取时,它仍在使用目录版本 V1。Aurora DSQL 的存储层拒绝该请求,因为 T2 时的最新目录版本是 V2。

当您在时间 T3 从原始会话中重试时,Aurora DSQL 会刷新目录缓存。T3 时的事务使用的是目录 V2。只要自时间 T2 以来没有发生其它目录更改,Aurora DSQL 就会完成事务。

SSL/TLS 连接故障排除

SSL error: certificate verify failed

此错误表示客户端无法验证服务器的证书。请确保:

  1. 已正确安装 Amazon Root CA 1 证书。有关如何验证和安装此证书的说明,请参阅为 Aurora DSQL 连接配置 SSL/TLS 证书

  2. PGSSLROOTCERT 环境变量指向正确的证书文件。

  3. 证书文件具有正确的权限。

Unrecognized SSL error code: 6

低于版本 14 的 PostgreSQL 客户端会发生此错误。要解决此问题,请将 PostgreSQL 客户端升级到版本 17。

SSL error: unregistered scheme (Windows)

这是使用系统证书时 Windows psql 客户端的一个已知问题。使用从 Windows 进行连接说明中描述的下载证书文件方法。