我尝试在 Amazon QuickSight 中使用自定义 SQL 数据来源,但我收到错误消息“Your database generated a SQL exception.”
简短描述
当 QuickSight 查询或刷新您的 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)连接出现问题。
- 您的 QuickSight 账户无权访问数据。
- 您的 QuickSight 服务角色无权访问 AWS 托管式密钥管理服务(AWS KMS)密钥。
- 您使用了不支持的数据类型或函数。
有关导致错误的原因的详细信息,请在错误消息下选择 Show Details(显示详细信息)。
如果您在刷新数据集时收到前面的错误消息,您可以在数据集的 Summary(摘要)下找到有关该错误的详细信息。选择 Status Import Failed(状态导入失败)以获取详细信息。
如果前面的错误消息显示在控制面板上,请导航到 Underlying analysis(基础分析),然后选择 Concerned visual(s)(相关视图)。记下位于分析左侧窗格中的数据集,然后查看数据集的 Summary(摘要)。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI。
查询超时
如果自定义 SQL 查询超时,请简化查询以优化运行时。有关其他查询超时解决方案,请参阅如何解决 QuickSight 中的查询超时错误?
与您的数据来源的 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 QuickSight。
您的 QuickSight 账户无权访问数据
如果您在尝试访问 AWS 服务中的数据时遇到 SQL 异常错误,请检查您的 QuickSight 安全和权限设置。
完成以下步骤:
- 打开 QuickSight 控制台。
- 选择 Manage QuickSight(管理 QuickSight)。
- 选择安全性和权限。
- 配置对您使用的支持数据来源的访问权限。
如果您使用 AWS Organizations,当未向您分配必要的服务控制策略 (SCP) 时,您会收到错误。请要求 Organizations 管理员在 SCP 设置中验证分配给您的权限。
如果您是 Organizations 管理员,请参阅更新服务控制策略 (SCP)。
您的 QuickSight 服务角色无权访问 AWS 托管式 KMS 密钥
您会收到以下错误:
"If you are encrypting query results with KMS key, please ensure you are allowed to access your KMS key."
要确认 QuickSight 服务角色拥有正确的 AWS KMS 密钥权限,请完成以下步骤:
- 使用 AWS Identity and Access Management(IAM)控制台找到 QuickSight 服务角色 ARN。
- 使用 Amazon Simple Storage Service (Amazon S3) 控制台查找 AWS KMS 密钥 ARN。转到包含您的数据文件的存储桶。选择 Overview(概述)选项卡,然后找到 AWS KMS 密钥 ID。
- 运行 AWS CLI 命令 create-grant,将 QuickSight 服务角色 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 替换为您的 QuickSight 服务角色的 ARN。
您使用了不支持的数据类型或函数
如果您尝试导入不支持的数据类型或使用不支持的 SQL 函数,则会收到 SQL 异常错误。要解决此问题,请检查 SQL 数据来源以确定是否支持该数据类型或 SQL 函数。
要查看支持的内容,请查看以下资源:
相关信息
直接 SQL 查询的限额
如何创建从 Amazon QuickSight 到私有子网中的 Amazon Redshift 集群或 Amazon RDS 数据库实例的私有连接?
Amazon QuickSight 的操作、资源和条件键