Messaggi di errore

Questo documento descrive i messaggi di errore che potresti riscontrare quando utilizzi BigQuery, inclusi i codici di errore HTTP e i passaggi consigliati per la risoluzione dei problemi.

Per saperne di più sugli errori delle query, consulta Risolvere gli errori delle query.

Per saperne di più sugli errori di inserimento di flussi di dati, consulta la pagina Risolvere i problemi relativi all'inserimento di flussi di dati.

Tabella degli errori

Le risposte dell'API BigQuery includono un codice di errore HTTP e un oggetto di errore nel corpo della risposta. Un oggetto di errore è in genere uno dei seguenti:

La colonna Messaggio di errore nella tabella seguente corrisponde alla proprietà reason in un oggetto ErrorProto.

La tabella non include tutti i possibili errori HTTP o altri errori di rete. Pertanto, non dare per scontato che un oggetto di errore sia presente in ogni risposta di errore di BigQuery. Inoltre, potresti ricevere errori o oggetti di errore diversi se utilizzi le librerie client di Cloud per l'API BigQuery. Per maggiori informazioni, consulta Librerie client API BigQuery.

Se ricevi un codice di risposta HTTP che non è presente nella tabella seguente, il codice di risposta indica un problema o un risultato previsto con la richiesta HTTP. I codici di risposta nell'intervallo 5xx indicano un errore lato server. Se ricevi un codice di risposta 5xx, riprova a inviare la richiesta in un secondo momento. In alcuni casi, un codice di risposta 5xx potrebbe essere restituito da un server intermedio come un proxy. Esamina il corpo della risposta e le intestazioni della risposta per i dettagli dell'errore. Per un elenco completo dei codici di risposta HTTP, consulta Codici di risposta HTTP.

Se utilizzi lo strumento a riga di comando bq per controllare lo stato del job, l'oggetto errore non viene restituito per impostazione predefinita. Per visualizzare l'oggetto errore e la proprietà reason corrispondente che corrisponde alla tabella seguente, utilizza il flag --format=prettyjson. Ad esempio: bq --format=prettyjson show -j *<job id>*. Per visualizzare il logging dettagliato per lo strumento bq, utilizza --apilog=stdout. Per saperne di più sulla risoluzione dei problemi relativi allo strumento bq, consulta la sezione Debug.

Messaggio di errore Codice HTTP Descrizione Risoluzione dei problemi
accessDenied 403

Questo errore viene restituito quando tenti di accedere a una risorsa come un set di dati, una tabella, una visualizzazione o un job a cui non hai accesso. Questo errore viene restituito anche quando tenti di modificare un oggetto di sola lettura.

Contatta il proprietario della risorsa e richiedi l'accesso alla risorsa per l'utente identificato dal valore principalEmail nel log di controllo dell'errore.

attributeError 400

Questo errore viene restituito quando si verifica un problema con il codice utente in cui viene chiamato un determinato attributo dell'oggetto, ma non esiste.

Assicurati che l'oggetto con cui stai lavorando abbia l'attributo a cui stai cercando di accedere. Per saperne di più su questo errore, consulta AttributeError.

backendError 500, 502, 503 o 504

Questo errore indica che il servizio non è al momento disponibile. Questo può accadere a causa di una serie di problemi temporanei, tra cui:

  • Aumento improvviso della domanda di servizi: picchi improvvisi della domanda, ad esempio durante i periodi di picco di utilizzo, possono comportare la riduzione del carico per proteggere la qualità del servizio per tutti gli utenti BigQuery. Per evitare che il sistema venga sovraccaricato, BigQuery può restituire errori 500 o 503 per una piccola parte delle richieste.
  • Problemi di rete: la natura distribuita di BigQuery implica che i dati vengono spesso trasferiti tra diversi componenti o macchine del sistema. Vari problemi intermittenti di connettività di rete possono causare la restituzione di un errore 5xx da parte di BigQuery, inclusi errori di handshake SSL o altri problemi di infrastruttura di rete tra l'utente e Google Cloud.
  • Esaurimento delle risorse: BigQuery ha vari limiti interni delle risorse per proteggere le prestazioni complessive del servizio dal consumo eccessivo di risorse da parte di un singolo utente o di un singolo job. BigQuery implementa il load shedding per risolvere il problema dell'esaurimento delle risorse.
  • Errori di backend: in rari casi, un problema interno a uno dei componenti di BigQuery può comportare la restituzione di un errore 500 o 503 al client.

Gli errori 5xx sono problemi lato servizio e il client non ha modo di risolverli o controllarli. Dal lato client, per mitigare l'impatto degli errori 5xx, devi riprovare a inviare le richieste utilizzando backoff esponenziali troncati. Per saperne di più sui backoff esponenziali, consulta Backoff esponenziale. Tuttavia, esistono due casi speciali per la risoluzione dei problemi relativi a questo errore: chiamate jobs.get e chiamate jobs.insert.

jobs.get chiamate

  • Se hai ricevuto un errore 503 durante il polling jobs.get, attendi qualche secondo e riprova.
  • Se il job viene completato, ma include un oggetto di errore che contiene backendError, il job non è riuscito. Puoi riprovare il job in tutta sicurezza senza preoccuparti della coerenza dei dati.

Chiamate jobs.insert
Se ricevi questo errore quando effettui una chiamata jobs.insert, non è chiaro se il job è andato a buon fine. In questo caso, dovrai riprovare il job.

Se i tentativi non sono efficaci e i problemi persistono, puoi calcolare la percentuale di richieste non riuscite e contattare l'assistenza.
Inoltre, se noti che una richiesta specifica a BigQuery non va a buon fine in modo persistente con un errore 5xx, anche se riprovata utilizzando il backoff esponenziale in più tentativi di riavvio del flusso di lavoro, devi riassegnare il problema all'assistenza per risolvere il problema dal lato BigQuery, indipendentemente dal tasso di errore complessivo calcolato. Assicurati di comunicare chiaramente l'impatto sull'attività in modo che il problema possa essere valutato correttamente.

badRequest 400

L'errore 'UPDATE or DELETE statement over table project.dataset.table would affect rows in the streaming buffer, which is not supported' può verificarsi quando alcune righe trasmesse in streaming di recente in una tabella potrebbero non essere disponibili per le operazioni DML (DELETE, UPDATE,MERGE), in genere per alcuni minuti, ma in rari casi, fino a 90 minuti. Per ulteriori informazioni, consulta Disponibilità dei dati di streaming e