Messaggi di errore

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

Per ulteriori informazioni sugli errori di query, consulta Risoluzione degli errori relativi alle query.

Per ulteriori informazioni sugli errori di inserimento di flussi di dati, consulta Risolvere i problemi di inserimento di flussi di dati.

Tabella degli errori

Le risposte dell'API BigQuery includono un codice di errore HTTP e un oggetto di errore nella corpo della risposta. Un oggetto di errore può essere generalmente uno dei seguenti:

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

La tabella non include tutti i possibili errori HTTP o altri errori di rete. Pertanto, non dare per scontato che è presente un oggetto di errore in ogni risposta di errore di BigQuery. Inoltre, potrebbero ricevere errori o oggetti di errore diversi se utilizzi il client Cloud Librerie per l'API BigQuery. Per saperne di più, consulta Librerie client dell'API BigQuery.

Se ricevi un codice di risposta HTTP che non è visualizzato 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 una risposta 5xx e riprova a eseguire la richiesta in un secondo momento. In alcuni casi, un codice di risposta 5xx potrebbe essere restituiti da un server intermedio, come un proxy. Esamina il corpo della risposta e le intestazioni della risposta per maggiori dettagli sull'errore. Per un elenco completo dei codici di risposta HTTP, vedi Risposta HTTP codici.

Se utilizzi lo strumento a riga di comando bq per controlla lo stato del job, l'oggetto di errore non viene restituito per impostazione predefinita. Per visualizzare e la proprietà reason corrispondente mappata alla seguente tabella, utilizza 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 scoprire di più sulla risoluzione dei problemi relativi allo strumento bq, consulta 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, tabella, visualizzazione o job a cui non hai accesso. Questo viene restituito anche quando tenti di modificare un oggetto di sola lettura. Contatta il proprietario della risorsa e richiedi l'accesso al risorsa per l'utente identificato dal valore principalEmail nell'audit log dell'errore.
backendError 500 o 503 Questo errore viene restituito quando si verifica un errore temporaneo del server, ad esempio una connessione di rete. un problema o un sovraccarico del server. In genere, attendi qualche secondo e riprova. Se il problema si ripresenta, riprova con il backoff esponenziale. Tuttavia, esistono due casi speciali risolvi questo errore: jobs.get chiamate e jobs.insert chiamate.

jobs.get chiamate

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

jobs.insert chiamate

Se ricevi questo errore quando effettui una chiamata a jobs.insert, non è chiaro se il job è riuscito. In questo caso, dovrai riprovare a eseguire il job.

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 le righe di una tabella trasmesse di recente potrebbero non essere disponibili per le operazioni DML (DELETE, UPDATE,MERGE), in genere per pochi minuti, ma in rari casi, fino ai 90 minuti circa. Per ulteriori informazioni, consulta la sezione Disponibilità dei dati in modalità flusso e Limitazioni per DML. Per verificare se i dati sono disponibili per le operazioni DML delle tabelle, controlla la Risposta tables.get per il streamingBuffer. Se la sezione streamingBuffer non è presente, i dati della tabella sono disponibili per le operazioni DML. Puoi anche usare streamingBuffer.oldestEntryTime per identificare l'età dei record nel buffer di flusso.
billingNotEnabled 403 Questo errore viene restituito quando la fatturazione non è abilitata per il progetto. Abilita la fatturazione per il progetto nella console Google Cloud.
billingTierLimitExceeded 400 Questo errore viene restituito quando il valore di statistics.query.billingTier per un Il job on demand supera 100. Questo si verifica quando le query on demand utilizzano troppa CPU rispetto al la quantità di dati analizzati. Per istruzioni su come esaminare le statistiche dei job, consulta Gestione dei job. Questo errore deriva più spesso dall'esecuzione di cross join inefficienti, in modo esplicito in modo implicito, ad esempio a causa di una condizione di join inesatta. Questi tipi di query non vengono adatti ai prezzi on demand a causa dell'elevato consumo di risorse e in generale potrebbero non scalare bene. Puoi ottimizzare la query o utilizzare il basato sulla capacità (slot) per risolvere l'errore. Per informazioni sull'ottimizzazione delle query, consulta Evitare gli anti-pattern SQL.
bloccato 403 Questo errore viene restituito quando BigQuery ha temporaneamente inserito l'operazione nella lista bloccata che hai tentato di eseguire, solitamente per evitare un'interruzione del servizio. Contatta l'assistenza per ulteriori informazioni.
duplicare 409 Questo errore viene restituito quando si cerca di creare un job, un set di dati o una tabella già esistente. La l'errore restituisce anche quando la proprietà writeDisposition di un job è impostata su WRITE_EMPTY e la tabella di destinazione a cui accede il job esistono già. Rinomina la risorsa che stai tentando di creare o modifica writeDisposition nel job.
internalError 500 Questo errore viene restituito quando si verifica un errore interno in BigQuery. Attendi in base ai requisiti di backoff descritti in Accordo sul livello del servizio di BigQuery, quindi prova l'operazione. Se l'errore continua a verificarsi, contatta l'assistenza. o segnala un bug con BigQuery Issue Tracker. Puoi anche ridurre la frequenza di questo errore utilizzando Prenotazioni.
non valido 400 Questo errore viene restituito quando è presente qualsiasi tipo di input non valido oltre a una query non valida, come come campi obbligatori mancanti o schema di tabella non valido. Le query non valide restituiscono un valore invalidQuery errore.
invalidQuery 400 Questo errore viene restituito quando tenti di eseguire una query non valida. Controlla se nella query sono presenti errori di sintassi. La riferimento query contiene descrizioni ed esempi di come costruire query valide.
invalidUser 400 Questo errore viene restituito quando cerchi di pianificare una query con credenziali utente non valide. Aggiornare le credenziali utente, come spiegato in Pianificazione delle query.
jobBackendError 400 Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito con un errore . Potresti visualizzare questo errore in jobs.query oppure jobs.getQueryResults. Riprova con un nuovo jobId. Se l'errore continua a verificarsi, contatta assistenza in tempo reale.
jobInternalError 400 Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito con un errore . Potresti visualizzare questo errore in jobs.query oppure jobs.getQueryResults. Riprova con un nuovo jobId. Se l'errore continua a verificarsi, contatta assistenza in tempo reale.
notFound 404 Questo errore viene restituito quando fai riferimento a una risorsa (un set di dati, una tabella o un job) che non esiste o quando la località nella richiesta non corrisponde a quella del risorsa (ad esempio, la località in cui è in esecuzione un job). Questo può verificarsi anche quando si utilizzano decoratori di tabelle per fare riferimento alle tabelle eliminate di cui è stato eseguito il flusso di flussi di recente. Correggi i nomi delle risorse, specifica correttamente la località o attendi almeno 6 ore dopo prima di eseguire query su una tabella eliminata.
notImplemented 501 Questo errore relativo al job viene restituito quando tenti di accedere a una funzionalità che non è implementata. Contatta l'assistenza per ulteriori informazioni.
quotaExceeded 403 Questo errore viene restituito quando il progetto supera un quota BigQuery, una quota personalizzata o se non hai configurato la fatturazione e hai superato il livello gratuito per le query. Visualizza la proprietà message dell'oggetto errore per ulteriori informazioni su quale quota è stata superata. Per reimpostare o aumentare una quota BigQuery, contatta l'assistenza. Per modificare una quota personalizzata, invia una richiesta dal Console Google Cloud . Se ricevi questo errore utilizzando la sandbox di BigQuery, puoi: dalla sandbox.

Per ulteriori informazioni, consulta la sezione Risoluzione dei problemi. Errori di quota di BigQuery.

rateLimitExceeded 403 Questo errore viene restituito se il progetto supera un limite di frequenza a breve termine inviandone troppi richieste troppo rapidamente. Ad esempio, consulta la tariffa per i job di query e limiti di frequenza per richieste API. Rallenta la tasso di richieste.

Se ritieni che il tuo progetto non abbia superato uno di questi limiti, contatta l'assistenza.

Per ulteriori informazioni, consulta la sezione Risoluzione dei problemi. Errori di quota di BigQuery.

resourceInUse 400 Questo errore viene restituito quando provi a eliminare un set di dati che contiene tabelle o quando provi a per eliminare un job attualmente in esecuzione. Svuota il set di dati prima di tentare di eliminarlo o attendi il completamento di un job prima che lo elimina.
resourcesExceeded 400 Questo errore viene restituito quando il job utilizza troppe risorse. Questo errore viene restituito quando il job utilizza troppe risorse. Per informazioni sulla risoluzione dei problemi, consulta Risoluzione dei problemi per il superamento della soglia.
responseTooLarge 403 Questo errore viene restituito quando i risultati della query sono superiori ai valori dimensione massima della risposta. Alcune query vengono eseguite in in più fasi e questo errore viene restituito quando qualsiasi fase restituisce una risposta di dimensioni troppo grandi anche se il risultato finale è inferiore al massimo. Questo errore di solito restituisce quando le query usano una clausola ORDER BY. A volte l'aggiunta di una clausola LIMIT può essere utile o rimuovere la clausola ORDER BY una clausola. Per avere la certezza che vengano restituiti risultati di grandi dimensioni, puoi impostare il valore proprietà allowLargeResults in true e specifica una destinazione . Per ulteriori informazioni, vedi Scrittura di risultati di query di grandi dimensioni.
operazione interrotta 200 Questo codice di stato viene restituito quando un job viene annullato.
tableUnavailable 400 Alcune tabelle BigQuery sono supportate da dati gestiti da altri prodotti Google team di sicurezza. Questo errore indica che una di queste tabelle non è disponibile. Quando viene visualizzato questo messaggio di errore, puoi riprovare la richiesta (vedi internalError per risolvere eventuali problemi) o contatta Il team dei prodotti Google che ti ha concesso l'accesso ai suoi dati.
timeout 400 Il job è scaduto. Valuta la possibilità di ridurre la quantità di lavoro svolto dall'operazione in modo che possa essere completata entro il limite impostato. Consulta Quote e limiti.

Esempio di risposta di errore

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"
  }
}

Errori di autenticazione

Gli errori generati dal sistema di generazione dei token OAuth restituiscono il seguente oggetto JSON, come definito dal token OAuth2 la specifica del prodotto.

{"error" : "description_string"}

L'errore è accompagnato da un errore di richiesta errata HTTP 400 o da un errore HTTP 401 Errore di autorizzazione non autorizzata. description_string è uno dei codici di errore definiti dalla specifica OAuth2. Ad esempio:

{"error":"invalid_client"}

Esamina errori

Puoi utilizzare Esplora log per visualizzare gli errori di autenticazione per job, utenti o altri ambiti specifici. Di seguito sono riportati diversi esempi di filtri di Esplora log che puoi utilizzare per esaminare gli errori di autenticazione.

Cerca i job non riusciti con problemi di autorizzazione negli audit log dei criteri negati:
    resource.type="bigquery_resource"
    protoPayload.status.message=~"Access Denied"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
  
Cerca un account utente o di servizio specifico utilizzato per l'autenticazione:
    resource.type="bigquery_resource"
    protoPayload.authenticationInfo.principalEmail="EMAIL"
  

Sostituisci EMAIL con l'indirizzo email dell'account utente o di servizio.

Cerca le modifiche ai criteri IAM negli audit log delle attività di amministrazione:
    protoPayload.methodName=~"SetIamPolicy"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
  
Cerca le modifiche apportate a un set di dati BigQuery specifico negli audit log di accesso ai dati:
    resource.type="bigquery_resource"
    protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID"
    logName=projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
  

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto contenente la risorsa
  • DATASET_ID: l'ID del set di dati contenente la risorsa

Messaggi di errore relativi alla connettività

Nella tabella seguente sono elencati i messaggi di errore che potresti visualizzare a causa di connettività intermittente Problemi durante l'utilizzo delle librerie client o la chiamata all'API BigQuery dal tuo codice:

Messaggio di errore Libreria client o API Risoluzione dei problemi
La connessione è stata arrestata: javax.net.ssl.SSLEccezione: java.net.SocketEccezioni: Connection reset at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) Java Implementa un meccanismo di nuovo tentativo e imposta un valore di timeout più grande.
javax.net.ssl.SSLHandshakeEccezione: l'host remoto ha terminato l'handshake Java Implementa un meccanismo di nuovo tentativo e imposta un valore di timeout più grande.
Connessione interrotta. RemoteDisconnetti('Termina connessione chiusa remota senza risposta') Python Imposta un valore di timeout maggiore.
TaskCanceledEccezione: un'attività è stata annullata libreria .NET Aumentare il valore di timeout sul lato client.

Messaggi di errore della console Google Cloud

Nella tabella che segue sono elencati i messaggi di errore che potresti visualizzare mentre utilizzi nella console Google Cloud.

Messaggio di errore Descrizione Risoluzione dei problemi
Risposta di errore sconosciuta del server. Questo errore viene visualizzato quando la console Google Cloud riceve un errore sconosciuto dal server. della Ad esempio, quando fai clic su un set di dati o su un altro tipo di link e la pagina non può essere visualizzata. Passare alla modalità di navigazione in incognito o privata del browser e ripetere l'azione che ha generato l'errore. Se non si verifica alcun errore nella modalità di navigazione in incognito, l'errore potrebbe essere dovuto a un un'estensione del browser, ad esempio un blocco degli annunci. Disattiva le estensioni del browser in modalità di navigazione in incognito e controlla se il problema si risolve.