Si les requêtes qui utilisent l'extension bigquery_fdw échouent, utilisez les messages d'erreur et les correctifs recommandés suivants pour restaurer l'accès en temps réel à vos données BigQuery depuis AlloyDB pour PostgreSQL. Les causes courantes incluent une extension désactivée, des autorisations BigQuery manquantes pour le compte de service du cluster et des définitions de tables externes qui ne correspondent pas aux noms de colonnes ou aux types de données dans BigQuery.
Pour en savoir plus sur l'utilisation du wrapper de données étrangères BigQuery pour accéder aux données, consultez Configurer l'accès d'AlloyDB pour PostgreSQL aux données en temps réel dans BigQuery.
Problèmes liés aux extensions et aux métadonnées
Cette section répertorie les erreurs d'extension et de métadonnées que vous pouvez rencontrer et fournit des suggestions pour les résoudre.
L'extension bigquery_fdw est désactivée
Correction recommandée
Pour résoudre ce problème, procédez comme suit :
Assurez-vous que l'indicateur de base de données
bigquery_fdw.enabledest défini suron. Vous pouvez le vérifier de l'une des manières suivantes :- Affichez les indicateurs de base de données actuels sur l'instance.
- Connectez-vous à l'instance et exécutez la commande suivante dans
psql:
SHOW bigquery_fdw.enabled;Si l'option
bigquery_fdw.enabledest définie suroff, définissezbigquery_fdw.enabledsuron.
Problèmes d'autorisation et d'accès
Cette section répertorie les erreurs d'autorisation et d'accès que vous pouvez rencontrer et fournit des solutions recommandées.
Accès refusé : autorisation bigquery.tables.get refusée pour la table
L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :
Error in non-idempotent operation: Access Denied: Table TABLE_NAME: Permission bigquery.tables.get denied on table TABLE_NAME (or it may not exist).
Cela indique que le compte de service du cluster AlloyDB ne dispose pas des autorisations de lecteur de données BigQuery.
Correction recommandée
Pour résoudre ce problème, attribuez l'un des rôles suivants au cluster principal service_account_email :
- Lecteur de données BigQuery (
roles/bigquery.dataViewer) - Un rôle personnalisé contenant les autorisations
bigquery.tables.getetbigquery.tables.getData.
Accès bigquery.readsessions.create refusé
L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :
Error in non-idempotent operation: request failed: the user does not have 'bigquery.readsessions.create' permission for PROJECT_NAME.
Cela indique que le compte de service du cluster AlloyDB ne dispose pas des autorisations d'utilisateur de session de lecture BigQuery.
Correction recommandée
Pour résoudre ce problème, attribuez l'un des rôles suivants au service_account_email du cluster principal :
- Utilisateur de sessions de lecture BigQuery (
roles/bigquery.readSessionUser) - Un rôle personnalisé contenant les autorisations
bigquery.readsessions.createetbigquery.readsessions.getData.
L'utilisateur ne dispose pas de l'autorisation bigquery.jobs.create
L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :
Error in non-idempotent operation: Access Denied: Project PROJECT_NAME: User does not have bigquery.jobs.create permission in project PROJECT_NAME.
Correction recommandée
Pour résoudre ce problème, attribuez l'un des rôles suivants au cluster AlloyDB service_account_email :
- Utilisateur de job BigQuery (
roles/bigquery.jobUser). - Un rôle personnalisé contenant l'autorisation
bigquery.jobs.create.
Problèmes de configuration et de type de données
Cette section liste les erreurs de configuration et de type de données que vous pouvez rencontrer, et fournit des solutions recommandées.
Les champs sélectionnés n'existent pas dans le schéma de la table
Les problèmes suivants se sont produits :
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);
Cela indique des noms de colonnes incorrects dans la définition de la table externe.
Correction recommandée
Pour résoudre ce problème, assurez-vous que le nom exact de la colonne (sensible à la casse) existe dans la table BigQuery correspondante spécifiée dans la définition.
Syntaxe d'entrée non valide pour le mappage de type
L'opération a échoué avec l'erreur suivante :
ERROR: invalid input syntax for type POSTGRES_COLUMN_DATA_TYPE: BIGQUERY_COLUMN_VALUE_RECEIVED.
Cela indique un mappage de type de données de colonne incorrect dans la définition de la table externe.
Correction recommandée
Pour résoudre ce problème, assurez-vous que le mappage des types de données est compatible. Par exemple, une colonne de chaîne dans BigQuery ne peut pas être mappée à une colonne d'entiers dans PostgreSQL. Pour en savoir plus, consultez Mappages des types de données.
Type de données de colonne BigQuery non compatible
Les problèmes suivants se sont produits :
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.
Cela indique que le type de données de la colonne interrogée n'est pas compatible.
Correction recommandée
Pour résoudre ce problème, consultez Mappages de types de données.
Impossible de lire les entités qui ne sont pas des tables
L'extension a échoué avec l'erreur suivante :
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.
Cela indique que le type de table BigQuery interrogé n'est pas compatible.
Correction recommandée
Pour résoudre ce problème, assurez-vous d'interroger un type d'entité BigQuery compatible, tel qu'une table standard.