Spanner-Fehlercodes und Fehlerbehandlung

Auf dieser Seite werden Spanner-Fehlercodes und empfohlene Maßnahmen Fehler beheben können. Google APIs, einschließlich Spanner, verwenden die Methode kanonische Fehlercodes, die durch google.rpc.Code definiert sind.

Wenn eine Spanner-Anfrage erfolgreich ist, gibt die API eine HTTP- 200 OK-Statuscode zusammen mit den angeforderten Daten im Text der Antwort.

Wenn eine Anfrage fehlschlägt, gibt die Spanner API eine HTTP- 4xx- oder 5xx-Statuscode, der den Fehler allgemein identifiziert, sowie ein , die spezifischere Informationen zu dem/den Fehler(n) enthält, der/die verursacht wurde(n) Fehler.

Das Antwortobjekt enthält ein einzelnes Feld error, dessen Wert die folgenden Elemente umfasst:

Element Beschreibung
code Ein HTTP-Statuscode, der den Anfragefehler allgemein identifiziert.
message Spezifische Informationen zum Anfragefehler.
status Die kanonischen Fehlercode (google.rpc.Code) für Google APIs. Codes, die von der Spanner API zurückgegeben werden können, sind unter Fehlercodes aufgeführt.

Wenn eine Anfrage mit dem Inhaltstyp application/x-protobuf zu einem Fehler führt, wird als Nutzlast die serialisierte Meldung google.rpc.Status zurückgegeben.

Fehlercodes

Die empfohlene Methode zur Klassifizierung von Fehlern besteht darin, den Wert des Parameters kanonischen Fehlercode (google.rpc.Code) verwendet. Bei JSON-Fehlern wird dieser Code im Feld status ein. Bei Fehlern vom Typ application/x-protobuf wird er im Feld code angezeigt.

Fehlercode Beschreibung Empfohlene Maßnahmen
ABORTED Der Vorgang wurde abgebrochen, in der Regel aufgrund eines Gleichzeitigkeitsproblems wie einer fehlgeschlagenen Sequencer-Überprüfung oder einer abgebrochenen Transaktion. Gibt an, dass ein Konflikt mit einer anderen Anfrage bestand. Bei einem nicht transaktionalen Commit:
Wiederholen Sie die Anfrage oder strukturieren Sie Ihre Entitäten, um Konflikte zu reduzieren.

Bei Anfragen, die Teil eines transaktional Commits sind:
Wiederholen Sie die gesamte Transaktion oder strukturieren Sie Ihre Entitäten, um Konflikte zu reduzieren.
ALREADY_EXISTS Die Entität, die ein Client erstellen wollte, ist bereits vorhanden (z. B. Einfügen einer Zeile mit einem vorhandenen Primärschlüssel). Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
CANCELLED Der Vorgang wurde abgebrochen, üblicherweise vom Aufrufer. Wiederholen Sie den Vorgang.
DEADLINE_EXCEEDED Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. Prüfen Sie, ob die Frist ausreicht. Verwenden Sie eine Frist, die der tatsächlichen Zeit entspricht, in der eine Antwort nützlich ist. Bei Vorgängen, die den Systemstatus ändern, kann ein Fehler zurückgegeben werden, auch wenn der Vorgang erfolgreich abgeschlossen wurde.

Weitere Informationen finden Sie unter Fehlerbehebung bei Fristüberschreitungen.
FAILED_PRECONDITION Der Vorgang wurde abgelehnt, weil eine Voraussetzung für die Anfrage nicht erfüllt war. Das Nachrichtenfeld der Fehlerantwort enthält Informationen zu der nicht erfüllten Vorbedingung. Beispiel: Lesen oder Abfragen von einem Zeitstempel, der die maximale Zeitstempelveralterung überschritten hat. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
INTERNAL Der Server hat einen Fehler zurückgegeben. Einige vom zugrunde liegende System erwartete Invarianten wurden beschädigt. Wiederholen Sie den Vorgang nur, wenn Sie die genauen Umstände und die Ursache des Fehlers im Klaren sind.
INVALID_ARGUMENT Der Kunde hat einen ungültigen Wert angegeben. Im Nachrichtenfeld der Fehlerantwort ist angegeben, welcher Wert ungültig war. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
NOT_FOUND Gibt an, dass eine angeforderte Entität nicht vorhanden ist, z. B. das Aktualisieren einer Entität oder das Abfragen einer Tabelle oder Spalte. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
OUT_OF_RANGE Beim Vorgang wurde versucht, den gültigen Bereich zu überschreiten. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
PERMISSION_DENIED Der Nutzer war zu dieser Anfrage nicht berechtigt. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
RESOURCE_EXHAUSTED Eine Ressource ist erschöpft. Möglicherweise wurde das Kontingent des Projekts überschritten oder das gesamte Dateisystem hat keinen Speicherplatz mehr. Achten Sie darauf, dass Sie Ihr Spanner- oder Projektkontingent nicht überschritten haben. Wenn Sie ein Kontingent überschritten haben, wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.

Andernfalls sollten Sie den Vorgang mit exponentiellem Backoff wiederholen.
UNAUTHENTICATED Die Anfrage enthält keine gültigen Authentifizierungsdaten für diesen Vorgang. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
UNAVAILABLE Der Server ist nicht verfügbar. Wiederholen Sie den Vorgang mit exponentiellem Backoff. Es ist nicht immer sicher, nicht idempotente Vorgänge zu wiederholen.
UNIMPLEMENTED Dieser Vorgang ist nicht implementiert oder wird bei diesem Dienst nicht unterstützt bzw. ist bei diesem Dienst nicht aktiviert. Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.
UNKNOWN Der Server hat einen unbekannten Fehler zurückgegeben. Fehler, die von APIs ausgegeben werden, die nicht genügend Fehlerinformationen liefern, können in diesen Fehler umgewandelt werden. Prüfen Sie, ob Ihre Anfrage sicher ist. Wiederholen Sie den Vorgang dann mit exponentiellem Backoff.