如何使用 QuickSight 中的自定义 SQL 数据源解决 SQL 异常错误?

上次更新日期:2022 年 7 月 25 日

我正尝试在 Amazon QuickSight 中使用自定义 SQL 数据源,但收到错误消息“您的数据库生成 SQL 异常。” 如何解决此问题?

简短描述

当 Amazon 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."

有关错误原因的更多详细信息,请选择错误消息下方的 Show Details(显示详细信息)。

收到错误消息的常见原因包括:

  • 查询超时。
  • 数据源的 VPC 连接存在问题。
  • 您的 QuickSight 账户没有访问数据的权限。
  • 您的 QuickSight 服务角色无权访问 AWS 托管式密钥管理服务 (AWS KMS) 密钥。
  • 您正在使用不受支持的数据类型或函数。

解决方案

如果您在运行 AWS 命令行界面 (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 中的网络安全组。有关更多信息,请参阅使用 Amazon QuickSight 连接到 VPC

您的 QuickSight 账户没有访问数据的权限

如果您在尝试访问 AWS 服务中的数据时遇到 SQL 异常错误,请检查您的 QuickSight 安全和权限设置。

  1. 打开 Amazon QuickSight 控制台
  2. 选择 Manage QuickSight(管理 QuickSight)。
  3. 选择 Security & permissions(安全性和权限)。
  4. 配置对您使用的支持服务的访问权限。

如果您使用 AWS Organizations,则在没有分配必要的服务控制策略 (SCP) 时,您可能会收到错误消息。让 AWS Organizations 管理员检查您的 SCP 设置,以验证分配给您的权限。如果您是 AWS Organizations 管理员,请参阅创建、更新和删除服务控制策略

您的 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 密钥权限。

  1. 使用 AWS Identity and Access Management (IAM) 控制台查找 QuickSight 服务角色 ARN。
  2. 使用 Amazon Simple Storage Service (Amazon S3) 控制台查找 AWS KMS 密钥 ARN。
    转到包含您的数据文件的存储桶。
    选择 Overview(概述)选项卡,然后找到 KMS key ID(KMS 密钥 ID)。
  3. 将 QuickSight 服务角色 ARN 添加到 KMS 密钥策略中。

运行 AWS CLI create-grant 命令:

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 函数。

要查看支持的数据类型或函数,请检查以下资源: