Messages d'erreur
Ce document décrit les messages d'erreur que vous pouvez rencontrer lors de l'utilisation de BigQuery, y compris les codes d'erreur HTTP et les étapes de dépannage suggérées.
Pour en savoir plus sur les erreurs de requête, consultez la page Résoudre les erreurs de requête.
Pour en savoir plus sur les erreurs d'insertion en flux continu, consultez la page Résoudre les problèmes liés à l'insertion en flux continu.
Tableau d'erreurs
Les réponses de l'API BigQuery incluent un code d'erreur HTTP et un objet d'erreur dans le corps de la réponse. Un objet d'erreur est généralement l'un des éléments suivants :
- Un objet
errors
, qui contient un tableau d'objetsErrorProto
. - Un objet
errorResults
, qui contient un seul objetErrorProto
.
La colonne Message d'erreur du tableau suivant correspond à la propriété reason
d'un objet ErrorProto
.
Le tableau n'inclut pas toutes les erreurs HTTP possibles ou d'autres erreurs de mise en réseau. Par conséquent, ne partez pas du principe qu'un objet d'erreur est présent dans chaque réponse d'erreur de BigQuery. Vous pouvez également recevoir des erreurs ou des objets d'erreur différents si vous utilisez les bibliothèques clientes Cloud pour l'API BigQuery. Pour en savoir plus, consultez la page Bibliothèques clientes de l'API BigQuery.
Si vous recevez un code de réponse HTTP qui n'apparaît pas dans le tableau ci-dessous, il indique un problème ou un résultat attendu pour la requête HTTP. Les codes de réponse compris dans la plage 5xx
indiquent une erreur côté serveur. Si vous recevez un code de réponse 5xx
, réessayez la requête ultérieurement. Dans certains cas, un code de réponse 5xx
peut être renvoyé par un serveur intermédiaire, tel qu'un proxy. Pour en savoir plus sur l'erreur, examinez le corps de la réponse et les en-têtes de réponse. Pour obtenir la liste complète des codes de réponse HTTP, consultez les codes de réponse HTTP.
Si vous utilisez l'outil de ligne de commande bq pour vérifier l'état d'une tâche, l'objet d'erreur n'est pas renvoyé par défaut. Afin de visualiser l'objet d'erreur et la propriété reason
correspondante dans le tableau ci-dessous, utilisez l'option --format=prettyjson
. Exemple : bq --format=prettyjson show -j <job
id>
. Pour afficher la journalisation détaillée de l'outil bq, utilisez --apilog=stdout
.
Pour en savoir plus sur le dépannage de l'outil bq, consultez la section Débogage.
Message d'erreur | Code HTTP | Description | Dépannage |
---|---|---|---|
accessDenied | 403 | Cette erreur apparaît lorsque vous essayez d'accéder à une ressource, telle qu'un ensemble de données, une table, une vue ou une tâche, à laquelle vous n'avez pas accès. Cette erreur survient également lorsqu'on tente de modifier un objet en lecture seule. | Contactez le propriétaire de la ressource et demandez l'accès à la ressource pour l'utilisateur identifié par la valeur principalEmail dans le journal d'audit de l'erreur. |
backendError | 500 ou 503 | Cette erreur apparaît en cas de panne temporaire du serveur, par exemple un problème de connexion réseau ou une surcharge du serveur. | En général, il suffit d'attendre quelques secondes, puis de réessayer. Si un problème est survenu, recommencez avec un intervalle exponentiel entre les tentatives.
Toutefois, il existe deux cas particuliers pour résoudre cette erreur : les appels jobs.get et les appels jobs.insert .
Appels
Appels Si vous recevez cette erreur lors d'un appel |
badRequest | 400 | L'erreur 'UPDATE or DELETE statement over table <project.dataset.table> would
affect rows in the streaming buffer, which is not supported' peut se produire lorsque certaines lignes récemment diffusées d'une table peuvent ne pas être disponibles pour les opérations LMD (DELETE , UPDATE , MERGE ), généralement pendant quelques minutes, mais dans de rares cas, jusqu'à 90 minutes. Pour en savoir plus, consultez les sections Disponibilité des données en streaming et
Limites du LMD. |
Pour savoir si les données sont disponibles pour les opérations LMD de la table, consultez la réponse tables.get pour la section streamingBuffer. Si la section "streamingBuffer" est absente, les données de la table sont disponibles pour les opérations LMD. Vous pouvez également utiliser le champ streamingBuffer.oldestEntryTime pour identifier l'âge des enregistrements dans le tampon d'insertion en flux continu. |
billingNotEnabled | 403 | Cette erreur apparaît lorsque la facturation n'est pas activée pour le projet. | Activez la facturation pour le projet dans Google Cloud Console. |
billingTierLimitExceeded | 400 | Cette erreur apparaît lorsque la valeur de statistics.query.billingTier pour une tâche à la demande dépasse 100. Cela se produit lorsque les requêtes à la demande utilisent trop de ressources processeur par rapport à la quantité de données analysée. Pour savoir comment inspecter les statistiques de tâches, consultez la page Gérer les tâches.
|
Cette erreur résulte le plus souvent d'une exécution de jointures croisées inefficaces, explicitement ou implicitement, par exemple en raison d'une condition de jointure inexacte. Ces types de requêtes ne sont pas adaptés aux tarifs à la demande en raison d'une consommation élevée des ressources et, en général, ils peuvent ne pas évoluer correctement. Pour résoudre cette erreur, vous pouvez optimiser la requête ou passer aux tarifs forfaitaires. Pour en savoir plus sur l'optimisation des requêtes, consultez la section Éviter les antimodèles SQL. |
blocked | 403 | Cette erreur apparaît lorsque BigQuery a temporairement mis sur liste de blocage l'opération que vous avez tenté d'exécuter, généralement pour éviter une interruption du service. | Pour en savoir plus, veuillez contacter l'assistance. |
duplicate | 409 | Cette erreur apparaît lorsqu'on essaye de créer une tâche, un ensemble de données ou une table qui existe déjà. L'erreur est également renvoyée lorsque la propriété de la tâche writeDisposition est définie sur WRITE_EMPTY et que la table de destination à laquelle la tâche est associée existe déjà. |
Renommez la ressource que vous essayez de créer ou modifiez la valeur writeDisposition dans la tâche. |
internalError | 500 | Cette erreur apparaît lorsqu'une erreur interne se produit dans BigQuery. | Attendez conformément aux exigences d'attente décrites dans le contrat de niveau de service de BigQuery, puis réessayez. Si l'erreur persiste, contactez l'assistance ou signalez un bug à l'aide de l'outil de suivi des problèmes BigQuery. Vous pouvez également réduire la fréquence de cette erreur en utilisant des réservations. |
non valide | 400 |
Cette erreur apparaît en cas de saisie non valide autre qu'une requête non valide, par exemple des champs obligatoires non remplis ou un schéma de table non valide. Les requêtes non valides renvoient une erreur invalidQuery .
|
|
invalidQuery | 400 | Cette erreur apparaît lorsqu'on tente d'exécuter une requête non valide. | Recherchez les erreurs de syntaxe dans la requête. La référence de requête contient des descriptions et des exemples de construction de requêtes valides. |
invalidUser | 400 | Cette erreur apparaît lorsque vous tentez de planifier une requête avec des identifiants utilisateur non valides. | Actualisez les identifiants utilisateur, comme expliqué dans la page Planifier des requêtes. |
jobBackendError | 400 | Cette erreur apparaît lorsque la tâche a été créée avec succès, mais a échoué avec une erreur interne. Cette erreur peut s'afficher dans jobs.query ou dans jobs.getQueryResults . |
Réessayez d'exécuter la tâche avec un nouveau jobId . Si l'erreur persiste, contactez l'assistance. |
jobInternalError | 400 | Cette erreur apparaît lorsque la tâche a été créée avec succès, mais a échoué avec une erreur interne. Cette erreur peut s'afficher dans jobs.query ou dans jobs.getQueryResults . |
Réessayez d'exécuter la tâche avec un nouveau jobId . Si l'erreur persiste, contactez l'assistance. |
notFound | 404 | Cette erreur apparaît lorsque vous faites référence à une ressource (un ensemble de données, une table ou une tâche) qui n'existe pas ou lorsque l'emplacement dans la requête ne correspond pas à l'emplacement de la ressource (par exemple, l'emplacement dans lequel une tâche est exécutée). Elle peut également survenir lorsque vous utilisez des décorateurs de table pour faire référence à des tables supprimées ayant récemment reçu des données en streaming. | Corrigez les noms de ressources, spécifiez correctement l'emplacement ou attendez au moins six heures après l'opération de diffusion en flux continu avant d'interroger une table supprimée. |
notImplemented | 501 | Cette erreur de tâche apparaît lorsqu'on tente d'accéder à une fonctionnalité qui n'est pas implémentée. | Pour en savoir plus, veuillez contacter l'assistance. |
quotaExceeded | 403 | Cette erreur apparaît lorsque le projet dépasse un quota BigQuery ou un quota personnalisé, ou lorsque la facturation n'est pas configurée et que vous avez dépassé la version gratuite pour les requêtes. | Affichez la propriété message de l'objet d'erreur pour en savoir plus sur le quota dépassé. Pour réinitialiser ou augmenter un quota BigQuery, veuillez contacter l'assistance.
Pour modifier un quota personnalisé, envoyez une demande depuis la page de la Console Google Cloud. Si cette erreur apparaît lorsque vous utilisez le bac à sable BigQuery, vous pouvez effectuer une mise à niveau à partir du bac à sable.
Pour en savoir plus, consultez la page Résoudre les erreurs de quota BigQuery. |
rateLimitExceeded | 403 | Cette erreur apparaît si le projet dépasse une limitation du débit à court terme en envoyant trop de requêtes trop rapidement. Vous pouvez par exemple consulter les limitations du débit pour les tâches de requête et les limitations du débit pour les requêtes d'API. | Ralentissez la fréquence des demandes. Si vous pensez que le projet n'a pas dépassé l'une de ces limites, contactez l'assistance. Pour en savoir plus, consultez la page Résoudre les erreurs de quota BigQuery. |
resourceInUse | 400 | Cette erreur apparaît lorsque vous tentez de supprimer un ensemble de données contenant des tables ou de supprimer une tâche en cours d'exécution. | Videz l'ensemble de données avant d'essayer de le supprimer ou attendez la fin d'une tâche avant de la supprimer. |
resourcesExceeded | 400 | Cette erreur apparaît lorsque votre tâche utilise trop de ressources. | Cette erreur apparaît lorsque votre tâche utilise trop de ressources. Pour en savoir plus, consultez la page Résoudre les erreurs de dépassement de ressources. |
responseTooLarge | 403 | Cette erreur apparaît lorsque les résultats de la requête dépassent la taille de réponse maximale. Certaines requêtes s'exécutent en plusieurs étapes et cette erreur survient dès que l'une des étapes envoie une réponse d'une taille trop élevée, même si le résultat final est inférieur au maximum. Cette erreur survient généralement dans les requêtes qui utilisent une clause ORDER BY . |
Il peut parfois être utile d'ajouter une clause LIMIT . Sinon, supprimez la clause ORDER BY . Pour assurer l'affichage des résultats de taille volumineuse, vous pouvez définir la propriété allowLargeResults sur true et spécifier la table de destination. Pour plus d'informations, consultez la section Écrire des résultats de requête volumineux. |
stopped | 200 | Ce code d'état apparaît lorsqu'une tâche est annulée. | |
tableUnavailable | 400 | Certaines tables de BigQuery s'appuient sur des données gérées par d'autres équipes produit de Google. Cette erreur indique que l'une de ces tables est indisponible. | Lorsque vous rencontrez ce message d'erreur, vous pouvez essayer de relancer la requête (voir les suggestions de dépannage de internalError) ou contacter l'équipe produit Google qui vous a donné accès à ses données. |
timeout | 400 | La tâche a expiré. | Pensez à réduire le volume de travail réalisé par votre opération afin qu'elle puisse s'achever dans le délai imparti. Consultez la page Quotas et limites pour en savoir plus. |
Exemple de réponse d'erreur
GET https://bigquery.googleapis.com/bigquery/v2/projects/12345/datasets/foo Response: [404] { "error": { "errors": [ { "domain": "global", "reason": "notFound", "message": "Not Found: Dataset myproject:foo" }], "code": 404, "message": "Not Found: Dataset myproject:foo" } }
Erreurs d'authentification
Les erreurs émises par le système de génération de jetons OAuth renvoient l'objet JSON suivant, tel que défini par la spécification OAuth2.
{"error" : "description_string"}
L'erreur est accompagnée d'une erreur 400
(Bad Request) ou d'une erreur 401
(Unauthorized). description_string
est l'une des erreurs définies par la spécification OAuth2. Par exemple :
{"error":"invalid_client"}
Messages d'erreur liés à la connectivité
Le tableau suivant présente les messages d'erreur susceptibles de s'afficher en raison de problèmes de connectivité intermittente lorsque vous utilisez des bibliothèques clientes ou appelez l'API BigQuery à partir de votre code :
Message d'erreur | Bibliothèque cliente ou API | Dépannage |
---|---|---|
Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Connection reset at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) | Java | Implémentez un mécanisme de nouvelle tentative en définissant un délai avant expiration plus élevé. |
javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake | Java | Implémentez un mécanisme de nouvelle tentative en définissant un délai avant expiration plus élevé. |
Connection aborted. RemoteDisconnected('Remote end closed connection without response' | Python | Définissez un délai avant expiration plus élevé. |
TaskCanceledException: A task was canceled | Bibliothèque .NET | Augmentez la valeur du délai avant expiration côté client. |
Messages d'erreur de la console Google Cloud
Le tableau suivant répertorie les messages d'erreur susceptibles de s'afficher lorsque vous travaillez dans la console Google Cloud.
Message d'erreur | Description | Dépannage |
---|---|---|
Réponse "Erreur inconnue" renvoyée par le serveur. | Ce message s'affiche lorsque la console Google Cloud reçoit une alerte d'erreur inconnue de la part du serveur. Par exemple, cela peut se produire lorsque vous cliquez sur un ensemble de données ou un autre type de lien et que la page ne peut pas être affichée. | Passez en navigation privée ou en mode incognito dans votre navigateur, puis répétez l'action qui a provoqué l'erreur. Si aucune erreur ne se produit en mode de navigation privée, l'erreur peut être due à une extension du navigateur, un bloqueur de publicités, par exemple. Désactivez les extensions du navigateur en mode de navigation normal (non privé), puis vérifiez si le problème est résolu. |