我尝试在 Amazon Quick Sight 中使用自定义 SQL 数据来源,但我收到了错误消息“Your database generated a SQL exception”。
简短描述
当 Quick Sight 查询或刷新您的 SQL 数据来源时,您会收到以下错误消息:
“Your database generated a SQL exception.This can be caused by query timeouts, resource constraints, unexpected DDL alterations before or during a query, and other database errors.Check your database settings and your query, and try again."
由于以下原因,您可能会收到前面的错误消息:
- 查询超时。
- 您的数据来源的虚拟私有云 (VPC) 连接存在问题。
- 您的 Quick Sight 账户没有访问数据的权限。
- 您的 Quick Sight 服务角色没有访问 AWS 托管式密钥 Management Service (AWS KMS) 密钥的权限。
- 您使用了不支持的数据类型或函数。
有关导致错误的原因的详细信息,请在错误消息下选择 Show Details(显示详细信息)。
如果您在刷新数据集时收到前面的错误消息,您可以在数据集的 Summary(摘要)下找到有关该错误的详细信息。选择 Status Import Failed(状态导入失败)以获取详细信息。
如果前面的错误消息显示在控制面板上,请导航到 Underlying analysis(基础分析),然后选择 Concerned visual(s)(相关视图)。记下位于分析左侧窗格中的数据集,然后查看数据集的 Summary(摘要)。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI。
查询超时
如果自定义 SQL 查询超时,请简化查询以优化运行时。有关其他查询超时解决方案,请参阅如何解决 Quick Sight 中的查询超时错误?
您的数据来源的 VPC 连接存在问题
您会收到以下错误消息之一:
"Communications link failure The last packet successfully received from the server was nnnn milliseconds ago.The last packet sent successfully to the server was nnnn milliseconds ago."
-或-
"Communications link failure The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server."
如果您遇到数据来源的 VPC 连接问题,请检查 VPC 中与资源关联的网络安全组。有关详细信息,请参阅 Connecting to a VPC with Amazon Quick Sight(使用 Amazon Quick Sight 连接到 VPC)。
您的 QuickSight 账户没有访问数据的权限
如果您在尝试访问 AWS 服务中的数据时遇到 SQL 异常错误,请检查您的 Quick Sight 安全和权限设置。
完成以下步骤:
- 打开 Quick Sight 控制台。
- 选择 Manage Quick Sight(管理 Quick Sight)。
- 选择 Security & Permissions(安全性和权限)。
- 配置对您使用的支持数据来源的访问权限。
如果您使用 AWS Organizations,当未向您分配必要的服务控制策略 (SCP) 时,您会收到错误。请要求 Organizations 管理员在 SCP 设置中验证分配给您的权限。
如果您是 Organizations 管理员,请参阅更新服务控制策略 (SCP)。
您的 Quick Sight 服务角色没有访问 AWS 托管式 KMS 密钥的权限
您会收到以下错误:
“If you are encrypting query results with KMS key, please ensure you are allowed to access your KMS key.”
要确认 Quick Sight 服务角色拥有正确的 AWS KMS 密钥权限,请完成以下步骤:
- 使用 AWS Identity and Access Management (IAM) 控制台查找 Quick Sight 服务角色 ARN。
- 使用 Amazon Simple Storage Service (Amazon S3) 控制台查找 AWS KMS 密钥 ARN。转到包含您的数据文件的存储桶。选择 Overview(概述)选项卡,然后找到 AWS KMS 密钥 ID。
- 运行 create-grant AWS CLI 命令,将 Quick Sight 服务角色 ARN 添加到 AWS KMS 密钥策略中:
aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt
**注意:**请将 aws_kms_key_arn 替换为您的 AWS KMS 密钥的 ARN,将 quicksight_role_arn 替换为您的 Quick Sight 服务角色的 ARN。
您使用了不支持的数据类型或函数
如果您尝试导入不支持的数据类型或使用不支持的 SQL 函数,则会收到 SQL 异常错误。要解决此问题,请检查 SQL 数据来源以确定是否支持该数据类型或 SQL 函数。
要查看支持的内容,请查看以下资源:
相关信息
Quotas for direct SQL queries(直接 SQL 查询的配额)
如何创建从 Amazon Quick Sight 到私有子网中的 Amazon Redshift 集群或 Amazon RDS 数据库实例的私有连接?
Amazon Quick Sight 的操作、资源和条件键