本页介绍了如何解决 bigquery_fdw 扩展程序的常见问题。
如需了解如何使用 BigQuery 外部数据封装容器访问数据,请参阅配置 AlloyDB 对 BigQuery 中实时数据的访问权限。
扩展程序和元数据问题
本部分列出了您可能会遇到的扩展程序和元数据错误,并提供了有关如何修复每个错误的建议。
bigquery_fdw 扩展程序已停用
建议的修复方法
如需解决此问题,请按以下步骤操作:
确保数据库标志
bigquery_fdw.enabled设置为on。您可以通过以下任一方式进行验证:- 查看实例上的当前数据库标志。
- 连接到实例,并在
psql中运行以下命令:
SHOW bigquery_fdw.enabled;如果
bigquery_fdw.enabled标志为off, 请将bigquery_fdw.enabled设置为on。
权限和访问问题
本部分列出了您可能会遇到的权限和访问错误,并提供了建议的修复方法。
访问遭拒:表权限 bigquery.tables.get 遭拒
扩展程序无法创建 BigQuery 读取会话,并显示以下错误:
Error in non-idempotent operation: Access Denied: Table TABLE_NAME: Permission bigquery.tables.get denied on table TABLE_NAME (or it may not exist).
这表示 AlloyDB for PostgreSQL 集群服务帐号缺少 BigQuery 数据查看器权限。
建议的修复方法
如需解决此问题,请为主要集群 service_account_email 提供以下任一角色:
- BigQuery Data Viewer (
roles/bigquery.dataViewer) - 包含
bigquery.tables.get和bigquery.tables.getData权限的自定义角色。
访问 bigquery.readsessions.create 遭拒
扩展程序无法创建 BigQuery 读取会话,并显示以下错误:
Error in non-idempotent operation: request failed: the user does not have 'bigquery.readsessions.create' permission for PROJECT_NAME.
这表示 AlloyDB 集群服务帐号缺少 BigQuery 读取会话用户权限。
建议的修复方法
如需解决此问题,请为主要集群的 service_account_email 提供以下任一角色:
- BigQuery Read Session User (
roles/bigquery.readSessionUser) - 包含
bigquery.readsessions.create和bigquery.readsessions.getData权限的自定义角色。
用户没有 bigquery.jobs.create 权限
扩展程序无法创建 BigQuery 读取会话,并显示以下错误:
Error in non-idempotent operation: Access Denied: Project PROJECT_NAME: User does not have bigquery.jobs.create permission in project PROJECT_NAME.
建议的修复方法
如需解决此问题,请为 AlloyDB 集群 service_account_email 提供以下任一角色:
- BigQuery Job User (
roles/bigquery.jobUser)。 - 包含
bigquery.jobs.create权限的自定义角色。
配置和数据类型问题
本部分列出了您可能会遇到的配置和数据类型错误,并提供了建议的修复方法。
所选字段在表架构中不存在
发生了以下问题:
Error in non-idempotent operation: request failed: The following selected fields do not exist in the table schema: POSTGRES_COLUMN_NAME(S). Error in non-idempotent operation: Unrecognized name: POSTGRES_COLUMN_NAME(S);
这表示外部表定义中的列名称不正确。
建议的修复方法
如需解决此问题,请确保定义中指定的相应 BigQuery 表中存在确切的列名称(区分大小写)。
类型映射的输入语法无效
操作失败,并显示以下错误:
ERROR: invalid input syntax for type POSTGRES_COLUMN_DATA_TYPE: BIGQUERY_COLUMN_VALUE_RECEIVED.
这表示外部表定义中的列数据类型映射不正确。
建议的修复方法
如需解决此问题,请确保数据类型映射兼容,例如,BigQuery 中的字符串列不能映射到 PostgreSQL 中的整数列。如需了解详情,请参阅数据类型映射。
不支持的 BigQuery 列数据类型
发生了以下问题:
ERROR: bigquery_fdw extension encountered internal error for column: POSTGRES_COLUMN_DATA_TYPE. Only avro logical type: AVRO_BIGQUERY_LOGICAL_TYPE is supported for avro type: AVRO_BIGQUERY_DATA_TYPE. encountered internal error for column:POSTGRES_COLUMN_NAME. Data type: BIGQUERY_DATA_TYPE is not supported.
这表示查询的列数据类型不受支持。
建议的修复方法
如需解决此问题,请参阅数据类型映射。
无法读取非表实体
扩展程序失败,并显示以下错误:
ERROR: bigquery_fdw extension failed to create BigQuery read session with error: Error in non-idempotent operation: request failed: non-table entities cannot be read with the storage API.
这表示查询的 BigQuery 表类型不受支持。
建议的修复方法
如需解决此问题,请确保您查询的是受支持的 BigQuery 实体类型,例如标准表。