

# 对工作组错误进行故障排除
<a name="workgroups-troubleshooting"></a>

按照以下提示进行工作组故障排除。
+ 检查您账户中各个用户的权限。他们必须可访问查询结果的位置，以及要从中运行查询的工作组。如果他们要切换工作组，那么同时需要两个工作组的权限。有关信息，请参阅[使用 IAM 策略控制工作组访问](workgroups-iam-policy.md)。
+ 请注意 Athena 控制台中的上下文，以查看您要在哪一工作组中运行查询。如果您使用驱动程序，请确保设置为您需要的工作组。有关信息，请参阅[为查询指定工作组](specify-wkgroup-to-athena-in-which-to-run-queries.md)。
+ 如果您使用 API 或驱动程序运行查询，则必须使用以下方法之一指定查询结果位置：对于个人查询，使用 [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation)（客户端）。在工作组中，使用 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)。如果没有以任何一种方法指定位置，Athena 将在查询运行时发布错误。
+ 如果您使用工作组设置覆盖客户端设置，您可能会遇到有关查询结果位置的错误。例如，工作组用户可能没有相应权限，不能在 Amazon S3 中的工作组位置存储查询结果。在这种情况下，添加必需的权限。
+ 工作组会导致 API 操作的行为发生变化。要调用以下现有的 API 操作，要求您账户中的用户在 IAM 中对从中进行调用的工作组具有基于资源的权限。如果没有对工作组和工作组操作的权限，则下列 API 操作会引发 `AccessDeniedException`：**CreateNamedQuery**、**DeleteNamedQuery**、**GetNamedQuery**、**ListNamedQueries**、**StartQueryExecution**、**StopQueryExecution**、**ListQueryExecutions**、**GetQueryExecution**、**GetQueryResults** 和 **GetQueryResultsStream**（此 API 操作仅可与驱动程序一起使用，且不得通过其他方式供公众使用）。有关更多信息，请参阅《服务授权参考》**中的 [Amazon Athena 的操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)。

  调用 **BatchGetQueryExecution** 和 **BatchGetNamedQuery** API 操作时，仅会返回在用户可访问的工作组中运行的那些查询的相关信息。如果用户不可访问工作组，这些 API 操作会在未处理 ID 的列表中返回未授权的查询 ID。有关更多信息，请参阅 [使用 Athena 工作组 API](workgroups-api-list.md)。
+ 如果将从中运行查询的工作组已使用[强制实施的查询结果位置](workgroups-settings-override.md)配置，不要为 CTAS 查询指定 `external_location`。在此例中，Athena 将使指定了 `external_location` 的查询失败并发布错误。例如，如果您覆盖查询结果位置的客户端设置，强制工作组使用其自己的位置，此查询失败：`CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet', external_location='s3://amzn-s3-demo-bucket/test/') AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;`

您可能会看到以下错误。下表给出与工作组相关的部分错误以及建议的解决方案的列表。


**工作组错误**  

| 错误 | 出错情况... | 
| --- | --- | 
|  query state CANCELED.（查询状态已取消。） Bytes scanned limit was exceeded.（已超出扫描字节数限制。）  | 查询超过查询数据限制并已取消。请考虑重写查询以使其读取更少的数据，或联系您的账户管理员。 | 
|  User: arn:aws:iam::123456789012:user/abc is not authorized to perform: athena:StartQueryExecution on resource: arn:aws:athena:us-east-1:123456789012:workgroup/workgroupname （用户：arn:aws:iam::123456789012:user/abc 无权执行：资源上的 athena：StartQueryExecution：arn:aws:athena:us-east-1:123456789012:workgroup/workgroupname）  | 用户在一个工作组中运行查询，但不可访问该工作组。更新您的策略以便可访问该工作组。 | 
|  INVALID\$1INPUT. WorkGroup <name> is disabled.（工作组 <name> 已禁用。）  | 用户在一个工作组中运行查询，但该工作组已被禁用。您的工作组可由您的管理员禁用。也有可能是您没有对其的访问权限。在这两种情况下，与有权访问以修改工作组的管理员联系。 | 
|  INVALID\$1INPUT. WorkGroup <name> is not found.（未找到工作组 <name>。）  | 用户在一个工作组中运行查询，但该工作组不存在。如果工作组已被删除，就会发生这种情况。切换到另一工作组以运行查询。 | 
|  InvalidRequestException: when calling the StartQueryExecution operation: No output location provided.（InvalidRequestException：调用 StartQueryExecution 操作时：未提供输出位置。） An output location is required either through the Workgroup result configuration setting or as an API input.（需要通过工作组结果配置设置或作为 API 输入的输出位置。）  |  用户使用 API 运行查询，但未指定查询结果的位置。您必须使用以下两种方法之一为查询结果设置输出位置：对于单独查询，使用 [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation)（客户端）；对于工作组，使用 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)。  | 
|   The Create Table As Select query failed because it was submitted with an 'external\$1location' property to an Athena Workgroup that enforces a centralized output location for all queries.（“根据选择创建表”查询失败，因为其与“external\$1location”属性一同提交给强制执行所有查询集中输出位置的 Athena 工作组。） Please remove the 'external\$1location' property and resubmit the query.（请删除“external\$1location”属性并重新提交查询。）   | 如果从中运行查询的工作组已使用[强制实施的查询结果位置](workgroups-settings-override.md)配置，而且您为 CTAS 查询指定 external\$1location。在这种情况下，请删除 external\$1location 并重新运行查询。 | 
| Cannot create prepared statement prepared\$1statement\$1name.（无法创建预处理语句 prepared\$1statement\$1name。） The number of prepared statements in this workgroup exceeds the limit of 1000.（该工作组中的预处理语句数已超过 1000 的限制。） | 工作组中的预处理语句数已超过 1000 的限制。为解决此问题，请使用 [DEALLOCATE PREPARE](sql-deallocate-prepare.md) 从工作组中删除一条或多条预处理语句。或者，创建新工作组。 | 