Fehlermeldungen
In diesem Dokument werden Fehlermeldungen beschrieben, die beim Arbeiten mit BigQuery auftreten können, einschließlich HTTP-Fehlercodes und vorgeschlagene Schritte zur Fehlerbehebung.
Weitere Informationen zu Abfragefehlern finden Sie unter Abfragefehler beheben.
Weitere Informationen zu Fehlern bei Streaming-Insert-Anweisungen finden Sie unter Fehlerbehebung bei Streaming-Insert-Anweisungen.
Fehlertabelle
Antworten von der BigQuery API enthalten einen HTTP-Fehlercode und ein Fehlerobjekt im Antworttext. Ein Fehlerobjekt ist normalerweise eines der folgenden:
- Ein
errors
-Objekt, das ein Array vonErrorProto
-Objekten enthält. - Ein
errorResults
-Objekt, das ein einzelnesErrorProto
-Objekt enthält.
Die Spalte Fehlermeldung in der folgenden Tabelle wird dem Attribut reason
in einem ErrorProto
-Objekt zugeordnet.
Diese Tabelle enthält nicht alle möglichen HTTP-Fehler oder andere Netzwerkfehler. Gehen Sie daher nicht davon aus, dass ein Fehlerobjekt in jeder Fehlerantwort von BigQuery vorhanden ist. Darüber hinaus erhalten Sie möglicherweise verschiedene Fehler oder Fehlerobjekte, wenn Sie die Cloud-Clientbibliotheken für die BigQuery API verwenden. Weitere Informationen finden Sie unter BigQuery API-Clientbibliotheken.
Wenn Sie einen HTTP-Antwortcode erhalten, der nicht in der folgenden Tabelle erscheint, weist der Antwortcode auf ein Problem oder ein erwartetes Ergebnis mit der HTTP-Anfrage hin. Die Antwortcodes im Bereich 5xx
zeigen einen serverseitigen Fehler an. Wenn Sie einen 5xx
-Antwortcode erhalten, wiederholen Sie die Anfrage später. In einigen Fällen kann der Antwortcode 5xx
von einem Zwischenserver wie einem Proxy zurückgegeben werden. Details zum Fehler finden Sie im Antworttext und in den Antwortheadern. Eine vollständige Liste der HTTP-Antwortcodes finden Sie unter HTTP-Antwortcodes.
Wenn Sie den Jobstatus mithilfe des bq-Befehlszeilentools prüfen, wird standardmäßig kein Fehlerobjekt zurückgegeben. Zur Anzeige des Fehlerobjekts und des entsprechenden reason
-Attributs, das der folgenden Tabelle zugeordnet wird, verwenden Sie das Flag --format=prettyjson
. Beispiel: bq --format=prettyjson show -j <job
id>
Verwenden Sie --apilog=stdout
, um ein ausführliches Logging für das bq-Tool aufzurufen.
Weitere Informationen zur Fehlerbehebung für das bq-Tool finden Sie unter Fehlerbehebung.
Fehlermeldung | HTTP-Code | Beschreibung | Fehlerbehebung |
---|---|---|---|
accessDenied | 403 | Dieser Fehler wird bei dem Versuch zurückgegeben, auf Ressourcen wie Datasets, Tabellen, Ansichten oder Jobs zuzugreifen, auf die Sie keinen Zugriff haben. Er wird außerdem zurückgegeben, wenn Sie versuchen, ein schreibgeschütztes Objekt zu ändern. | Wenden Sie sich an den Ressourceninhaber und fordern Sie Zugriff auf die Ressource für den Nutzer an, der durch den Wert principalEmail im Audit-Log des Fehlers identifiziert wird. |
backendError | 500 oder 503 | Dieser Fehler wird bei einem vorübergehenden Serverausfall zurückgegeben, z. B. wenn es ein Problem mit der Netzwerkverbindung gibt oder der Server überlastet ist. | Im Allgemeinen wird empfohlen, einige Sekunden zu warten und es dann noch einmal zu versuchen. Tritt das Problem wieder auf, versuchen Sie es mit exponentiellem Backoff erneut.
Es gibt jedoch zwei Sonderfälle für die Behebung dieses Fehlers: jobs.get - und jobs.insert -Aufrufe.
Wenn Sie diesen Fehler beim Ausführen eines |
badRequest | 400 | Der Fehler 'UPDATE or DELETE statement over table <project.dataset.table> would
affect rows in the streaming buffer, which is not supported' kann auftreten, wenn einige kürzlich gestreamten Zeilen in einer Tabelle für DML-Vorgänge (DELETE , UPDATE , MERGE ) möglicherweise nicht verfügbar sind, in der Regel ein paar Minuten, in seltenen Fällen jedoch bis zu 90 Minuten. Weitere Informationen finden Sie unter Streaming-Datenverfügbarkeit und DML-Einschränkungen. |
In der Antwort tables.get für den
Abschnitt "streamingBuffer" können Sie sehen, ob Daten für Tabellen-DML-Vorgänge verfügbar sind. Wenn der Abschnitt "streamingBuffer" nicht vorhanden ist, sind Tabellendaten für DML-Vorgänge verfügbar. Sie können das Feld streamingBuffer.oldestEntryTime auch verwenden, um das Alter von Datensätzen im Streaming-Zwischenspeicher zu ermitteln. |
billingNotEnabled | 403 | Dieser Fehler wird zurückgegeben, wenn die Abrechnung für das Projekt nicht aktiviert ist. | Aktivieren Sie die Abrechnung für das Projekt in der Google Cloud Console. |
billingTierLimitExceeded | 400 | Dieser Fehler wird zurückgegeben, wenn der Wert von statistics.query.billingTier für einen On-Demand-Job über 100 liegt. Dies tritt auf, wenn On-Demand-Abfragen zu viel CPU im Vergleich zur Menge der gescannten Daten verbrauchen. Eine Anleitung zum Prüfen von Jobstatistiken finden Sie unter Jobs verwalten.
|
Dieser Fehler tritt meist auf, wenn ein ineffizienter Cross Joins explizit oder implizit ausgeführt wird, beispielsweise aufgrund einer ungenauen Join-Bedingung. Diese Abfragetypen sind aufgrund des hohen Ressourcenverbrauchs nicht für On-Demand-Preise geeignet und lassen sich im Allgemeinen nicht gut skalieren. Sie können entweder die Abfrage optimieren oder das Preismodell kapazitätsbasiert (Slots) verwenden, um diesen Fehler zu beheben. Informationen zum Optimieren von Abfragen finden Sie unter SQL-Anti-Muster vermeiden. |
blockiert | 403 | Dieser Fehler wird zurückgegeben, wenn BigQuery den Vorgang, den Sie ausführen möchten, vorübergehend auf die Ablehnungsliste gesetzt hat, meist mit dem Ziel, einen Dienstausfall zu verhindern. | Wenden Sie sich an den Support, um weitere Informationen zu erhalten. |
duplicate | 409 | Dieser Fehler wird bei dem Versuch zurückgegeben, bereits vorhandene Jobs, Datasets oder Tabellen zu erstellen. Der Fehler wird auch zurückgegeben, wenn das Attribut writeDisposition eines Jobs auf WRITE_EMPTY gesetzt und die Zieltabelle, auf die der Job zugreift, bereits vorhanden ist. |
Benennen Sie die Ressource, die Sie erstellen möchten, um oder ändern Sie den Wert writeDisposition im Job. |
internalError | 500 | Dieser Fehler wird bei einem internen Fehler von BigQuery zurückgegeben. | Warten Sie entsprechend den Backoff-Anforderungen im BigQuery-Service Level Agreement und führen Sie den Vorgang dann noch einmal aus. Wenn der Fehler weiterhin auftritt, wenden Sie sich an den Support oder melden Sie einen Programmfehler über die BigQuery-Problemverfolgung. Sie können die Häufigkeit dieses Fehlers auch mithilfe von Reservierungen reduzieren. |
ungültig | 400 |
Dieser Fehler wird zurückgegeben, wenn die Eingabe nicht wegen einer fehlerhaften Abfrage ungültig ist, sondern z. B. wegen nicht ausgefüllter Pflichtfelder oder wegen eines ungültigen Tabellenschemas. Bei ungültigen Abfragen wird der Fehler invalidQuery zurückgegeben.
|
|
invalidQuery | 400 | Dieser Fehler wird zurückgegeben, wenn Sie versuchen, eine ungültige Abfrage auszuführen. | Prüfen Sie die Abfrage auf Syntaxfehler. Die Funktionsreferenz für Abfragen enthält Erläuterungen und Beispiele zur Erstellung gültiger Abfragen. |
invalidUser | 400 | Dieser Fehler wird zurückgegeben, wenn Sie versuchen, eine Abfrage mit ungültigen Nutzeranmeldedaten zu planen. | Aktualisieren Sie die Nutzeranmeldedaten, wie unter Abfragen planen erläutert. |
jobBackendError | 400 | Dieser Fehler wird zurückgegeben, wenn der Job erfolgreich erstellt wurde, aber mit einem internen Fehler fehlgeschlagen ist. Dieser Fehler kann in jobs.query oder jobs.getQueryResults angezeigt werden. |
Wiederholen Sie den Job mit einem neuen jobId . Wenn der Fehler weiterhin auftritt, wenden Sie sich an den Support. |
jobInternalError | 400 | Dieser Fehler wird zurückgegeben, wenn der Job erfolgreich erstellt wurde, aber mit einem internen Fehler fehlgeschlagen ist. Dieser Fehler kann in jobs.query oder jobs.getQueryResults angezeigt werden. |
Wiederholen Sie den Job mit einem neuen jobId . Wenn der Fehler weiterhin auftritt, wenden Sie sich an den Support. |
notFound | 404 | Dieser Fehler wird zurückgegeben, wenn Sie eine nicht vorhandene Ressource angeben (ein Dataset, eine Tabelle oder ein Job) oder wenn der Standort in der Anfrage nicht mit dem Standort der Ressource übereinstimmt (z. B. dem Standort, an dem ein Job ausgeführt wird). Der Fehler kann auch auftreten, wenn Sie mit Tabelle-Decorators auf gelöschte Tabellen verweisen, an die kürzlich gestreamt wurde. | Korrigieren Sie die Ressourcennamen, geben Sie den Standort korrekt an oder warten Sie nach dem Streaming mindestens sechs Stunden, bevor Sie eine gelöschte Tabelle abfragen. |
notImplemented | 501 | Dieser Jobfehler wird zurückgegeben, wenn Sie versuchen, auf eine nicht implementierte Funktion zuzugreifen. | Wenden Sie sich an den Support, um weitere Informationen zu erhalten. |
quotaExceeded | 403 | Dieser Fehler wird zurückgegeben, wenn Ihr Projekt ein BigQuery-Kontingent oder ein benutzerdefiniertes Kontingent überschreitet oder wenn Sie keine Abrechnung eingerichtet haben und das kostenlose Kontingent für Abfragen überschreiten. | Informationen dazu, welches Kontingent überschritten wurde, sind über das Attribut message des Fehlerobjekts verfügbar. Wenn Sie ein BigQuery-Kontingent zurücksetzen oder erhöhen möchten, wenden Sie sich an den Support.
Zum Ändern eines benutzerdefinierten Kontingents können Sie eine Anfrage über die Google Cloud Console-Seite senden. Wenn Sie diesen Fehler bei Verwendung der BigQuery-Sandbox erhalten, können Sie ein Upgrade über die Sandbox ausführen.
Weitere Informationen finden Sie unter BigQuery-Kontingentfehler beheben. |
rateLimitExceeded | 403 | Dieser Fehler wird zurückgegeben, wenn Ihr Projekt eine kurzfristige Ratenbegrenzung überschreitet, weil zu viele Anfragen zu schnell gesendet werden. Informationen hierzu finden Sie beispielsweise unter Ratenbegrenzungen für Abfragejobs und Ratenbegrenzungen für API-Anfragen. | Verringern Sie die Anfragerate. Wenn Sie der Meinung sind, dass Ihr Projekt keines dieser Limits überschritten hat, wenden Sie sich an den Support. Weitere Informationen finden Sie unter BigQuery-Kontingentfehler beheben. |
resourceInUse | 400 | Dieser Fehler wird bei dem Versuch zurückgegeben, ein Dataset mit Tabellen oder einen gerade ausgeführten Job zu löschen. | Entfernen Sie vor dem Löschen die Tabellen aus dem Dataset bzw. warten Sie, bis der entsprechende Job abgeschlossen wurde. |
resourcesExceeded | 400 | Dieser Fehler wird zurückgegeben, wenn Ihr Job zu viele Ressourcen beansprucht. | Dieser Fehler wird zurückgegeben, wenn Ihr Job zu viele Ressourcen beansprucht. Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Ressourcenfehlern aufgrund überschrittener Ressourcen. |
responseTooLarge | 403 | Dieser Fehler wird zurückgegeben, wenn die Ergebnisse Ihrer Abfrage die maximale Antwortgröße überschreiten. Manche Abfragen werden in mehreren Schritten ausgeführt. Dieser Fehler wird zurückgegeben, wenn die Antwort bei einem einzelnen Schritt zu groß ist, auch wenn das Endergebnis unterhalb des Maximums liegt. Dieser Fehler tritt oft auf, wenn in Abfragen eine ORDER BY -Klausel verwendet wird. |
Manchmal lässt sich das Problem durch Hinzufügen einer LIMIT -Klausel oder durch Entfernen der ORDER BY -Klausel beheben. Damit große Ergebnisse keine Probleme verursachen, setzen Sie das Attribut allowLargeResults auf true und geben Sie eine Zieltabelle an. Weitere Informationen finden Sie unter Große Abfrageergebnisse schreiben. |
Angehalten | 200 | Dieser Statuscode wird zurückgegeben, wenn ein Job abgebrochen wird. | |
tableUnavailable | 400 | Für bestimmte BigQuery-Tabellen werden Daten benötigt, die von anderen Google-Produktteams verwaltet werden. Dieser Fehler gibt an, dass eine dieser Tabellen nicht verfügbar ist. | Wenn diese Fehlermeldung auftritt, können Sie die Anfrage noch einmal ausführen (siehe Vorschläge zur Fehlerbehebung für internalError) oder Sie wenden sich an das Google-Produktteam, das Ihnen Zugriff auf seine Daten gewährt hat. |
timeout | 400 | Zeitüberschreitung beim Job | Sie sollten die Menge der bei Ihrem Vorgang ausgeführten Arbeit reduzieren, damit sie innerhalb des festgelegten Limits ausgeführt werden kann. Mehr dazu unter Kontingente und Einschränkungen. |
Beispiel für eine Fehlerantwort
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" } }
Authentifizierungsfehler
Bei Fehlern, die vom System zur Generierung von OAuth-Tokens ausgegeben werden, wird gemäß der Definition der OAuth2-Spezifikation das folgende JSON-Objekt zurückgegeben:
{"error" : "description_string"}
Der Fehler wird zusammen mit einem "HTTP 400
Bad Request"-Fehler oder einem "HTTP 401
Unauthorized"-Fehler angezeigt. description_string
ist einer der Fehlercodes, die in der OAuth2-Spezifikation definiert sind. Beispiel:
{"error":"invalid_client"}
Fehler überprüfen
Mit dem Log-Explorer können Sie Authentifizierungsfehler für bestimmte Jobs, Nutzer oder andere Bereiche ansehen. Im Folgenden finden Sie einige Beispiele für Log-Explorer-Filter, mit denen Sie Authentifizierungsfehler prüfen können.
- Suchen Sie in den Audit-Logs zu Richtlinienverstößen nach fehlgeschlagenen Jobs mit Berechtigungsproblemen:
resource.type="bigquery_resource" protoPayload.status.message=~"Access Denied" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
- Nach einem bestimmten Nutzer oder Dienstkonto suchen, das für die Authentifizierung verwendet wird:
resource.type="bigquery_resource" protoPayload.authenticationInfo.principalEmail="EMAIL"
Ersetzen Sie
EMAIL
durch die E-Mail-Adresse des Nutzers oder Dienstkontos.- Suchen Sie in den Audit-Logs zur Administratoraktivität nach Änderungen der IAM-Richtlinien:
protoPayload.methodName=~"SetIamPolicy" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
- Suchen Sie in den Audit-Logs zum Datenzugriff nach Änderungen an einem bestimmten BigQuery-Dataset:
resource.type="bigquery_resource" protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID" logName=projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das die Ressource enthältDATASET_ID
: die ID des Datasets, das die Ressource enthält
Fehlermeldungen zur Verbindung
In der folgenden Tabelle sind Fehlermeldungen aufgeführt, die aufgrund von vorübergehenden Verbindungsproblemen bei der Verwendung der Clientbibliotheken oder beim Aufrufen der BigQuery API über Ihren Code auftreten können:
Fehlermeldung | Clientbibliothek oder API | Fehlerbehebung |
---|---|---|
Die Verbindung wurde heruntergefahren: javax.net.ssl.SSLException: java.net.SocketException: Verbindung zurückgesetzt bei com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) | Java | Implementieren Sie einen Wiederholungsmechanismus und legen Sie einen höheren Wert für die Zeitüberschreitung fest. |
javax.net.ssl.SSLHandshakeException: Remote-Host hat den Handshake terminiert | Java | Implementieren Sie einen Wiederholungsmechanismus und legen Sie einen höheren Wert für die Zeitüberschreitung fest. |
Verbindung abgebrochen. RemoteConnectioned(Remote-Verbindungwurde ohne Antwort beendet) | Python | Legen Sie einen höheren Wert für die Zeitüberschreitung fest. |
TaskCanceledException: Eine Aufgabe wurde abgebrochen | .NET-Bibliothek | Erhöhen Sie den Wert für das Zeitlimit auf der Clientseite. |
Fehlermeldungen in der Google Cloud Console
In der folgenden Tabelle sind Fehlermeldungen aufgeführt, die in der Cloud Console auftreten können.
Fehlermeldung | Beschreibung | Fehlerbehebung |
---|---|---|
Unbekannte Fehlerantwort vom Server | Dieser Fehler tritt auf, wenn die Cloud Console einen unbekannten Fehler vom Server empfängt. z. B. wenn Sie auf ein Dataset oder einen anderen Linktyp klicken und die Seite nicht angezeigt werden kann. | Wechseln Sie in den Inkognitomodus oder den privaten Modus des Browsers und wiederholen Sie die Aktion, die zum Fehler geführt hat. Wenn im Inkognitomodus kein Fehler auftritt, ist der Fehler möglicherweise auf eine Browsererweiterung, z. B. einen Werbeblocker, zurückzuführen sein. Deaktivieren Sie Ihre Browsererweiterungen, während Sie sich nicht im Inkognitomodus befinden, und prüfen Sie, ob das Problem dadurch behoben wird. |