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 per la risoluzione dei problemi suggeriti.
Per saperne di più sugli errori di query, consulta Risolvere gli errori di 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 errore nel corpo della risposta. Un oggetto errore è in genere uno dei seguenti:
- Un oggetto
errors
, che contiene un array di oggettiErrorProto
. - Un oggetto
errorResults
, contenente un singolo oggettoErrorProto
.
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 errore sia presente in ogni risposta di errore di BigQuery. Inoltre, potresti ricevere errori o oggetti errore diversi se utilizzi le librerie client Cloud per l'API BigQuery. Per ulteriori informazioni, consulta le librerie client dell'API BigQuery.
Se ricevi un codice di risposta HTTP che non compare 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 risposta 5xx
, riprova a inviare la richiesta in un secondo momento. In alcuni casi, un codice di risposta 5xx
potrebbe essere fornito da un server intermedio, ad esempio un proxy. Esamina il corpo della risposta e le intestazioni della risposta per avere dettagli sull'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 si mappa alla tabella seguente, utilizza il flag --format=prettyjson
. Ad esempio: bq --format=prettyjson show -j <job
id>
. Per visualizzare i log dettagliati 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 provi ad accedere a una risorsa come un set di dati, tabella, visualizzazione o job a cui non hai accesso. Questo errore viene restituito anche quando si tenta 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. |
backendError | 500 o 503 | Questo errore viene restituito in caso di guasto temporaneo del server, ad esempio un problema di connessione di rete 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 per la risoluzione di questo errore: chiamate jobs.get e chiamate jobs.insert .
Chiamate
Chiamate Se ricevi questo errore quando effettui una chiamata |
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 di una tabella sottoposte a streaming di recente potrebbero non essere disponibili per le operazioni DML (DELETE ,
UPDATE ,MERGE ), in genere per alcuni minuti, ma in rari casi anche per
fino a 90 minuti. Per ulteriori informazioni, consulta Disponibilità dei dati in streaming
e
Limitazioni DML. |
Per sapere se i dati sono disponibili per le operazioni DML della tabella, controlla la risposta tables.get per la
sezione streamingBuffer. Se la sezione streamingBuffer non è presente, i dati della tabella sono disponibili per le operazioni DML. Puoi anche utilizzare il campo streamingBuffer.oldestEntryTime
per identificare la data e l'ora dei record nel buffer di streaming. |
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
job on demand supera 100. Questo si verifica quando le query on demand utilizzano troppa CPU rispetto alla quantità di dati analizzati. Per istruzioni su come esaminare i dettagli dei job, consulta
Gestire i job.
|
Questo errore si verifica più spesso a causa dell'esecuzione di unioni crociate inefficienti, esplicitamente o implicitamente, ad esempio a causa di una condizione di unione non esatta. Questi tipi di query non sono adatti per i prezzi on demand a causa dell'elevato consumo di risorse e, in generale, potrebbero non essere scalabili. Per risolvere questo errore, puoi ottimizzare la query o passare al modello di determinazione dei prezzi basato sulla capacità (slot). Per informazioni sull'ottimizzazione delle query, consulta Come evitare gli anti-pattern SQL. |
bloccato | 403 | Questo errore viene restituito quando BigQuery ha inserito temporaneamente nella lista di rifiuto l'operazione che hai tentato di eseguire, in genere per evitare un'interruzione del servizio. | Contatta l'assistenza per ulteriori informazioni. |
duplicare | 409 | Questo errore viene restituito quando si tenta di creare un job, un set di dati o una tabella che esiste già. L'errore viene visualizzato anche quando la proprietà writeDisposition di un job è impostata su WRITE_EMPTY e la tabella di destinazione a cui accede il job esiste già. |
Rinomina la risorsa che stai tentando di creare o modifica il valore writeDisposition
nel job. |
internalError | 500 | Questo errore viene restituito quando si verifica un errore interno in BigQuery. | Attendi in base ai requisiti di back-off descritti nell'accordo sul livello del servizio di BigQuery, quindi riprova a eseguire l'operazione. Se l'errore persiste, contatta l'assistenza o registra un bug utilizzando il tracker dei problemi di BigQuery. Puoi anche ridurre la frequenza di questo errore utilizzando le prenotazioni. |
non valido | 400 |
Questo errore viene restituito quando è presente un tipo di input non valido diverso da una query non valida, ad esempio la mancanza di campi obbligatori o uno schema di tabella non valido. Le query non valide restituiscono un errore invalidQuery .
|
|
invalidQuery | 400 | Questo errore viene restituito quando tenti di eseguire una query non valida. | Controlla la presenza di errori di sintassi nella query. Il riferimento alle query contiene descrizioni ed esempi di come creare query valide. |
invalidUser | 400 | Questo errore viene restituito quando si tenta di pianificare una query con credenziali utente non valide. | Aggiorna le credenziali utente, come spiegato in Pianificazione delle query. |
jobBackendError | 400 | Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito a causa di un
errore interno. Potresti visualizzare questo errore in jobs.query o
jobs.getQueryResults . |
Riprova il job con un nuovo jobId . Se l'errore persiste, contatta l'assistenza. |
jobInternalError | 400 | Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito a causa di un
errore interno. Potresti visualizzare questo errore in jobs.query o
jobs.getQueryResults . |
Riprova il job con un nuovo jobId . Se l'errore persiste, contatta l'assistenza. |
jobRateLimitExceeded | 400 | Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito con un errore
rateLimitExceeded. Potresti visualizzare questo errore in
jobs.query o jobs.getQueryResults . |
Utilizza il backoff esponenziale
per ridurre il tasso di richieste, quindi riprova a eseguire il job con un nuovo jobId . |
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 posizione nella richiesta non corrisponde alla posizione della risorsa (ad esempio, la posizione in cui è in esecuzione un job). Questo può verificarsi anche quando utilizzi i decoratori di tabelle per fare riferimento a tabelle eliminate di recente a cui è stato eseguito lo streaming. | Correggi i nomi delle risorse, specifica correttamente la posizione o attendi almeno 6 ore dopo lo streaming prima di eseguire query su una tabella eliminata. |
notImplemented | 501 | Questo errore del job viene restituito quando si tenta di accedere a una funzionalità non implementata. | Contatta l'assistenza per ulteriori informazioni. |
proxyAuthenticationRequired | 407 | Questo errore viene restituito tra l'ambiente client e il server proxy quando la richiesta manca di credenziali di autenticazione valide per il server proxy. Per ulteriori informazioni, consulta 407 Proxy Authentication Required. | La risoluzione dei problemi è specifica per il tuo ambiente. Se ricevi questo errore mentre lavori in Java, assicurati di aver impostato sia le proprietà jdk.http.auth.tunneling.disabledSchemes= sia jdk.http.auth.proxying.disabledSchemes= senza alcun valore dopo il segno di uguale. |
quotaExceeded | 403 | Questo errore viene restituito quando il progetto supera una quota BigQuery, una quota personalizzata o quando non hai configurato la fatturazione e hai superato il livello gratuito per le query. | Visualizza la proprietà message dell'oggetto errore per ulteriori informazioni sulla quota superata. Per reimpostare o aumentare una quota BigQuery,
contatta l'assistenza.
Per modificare una quota personalizzata, invia una richiesta dalla pagina
Google Cloud Console. Se ricevi questo errore utilizzando la sandbox di BigQuery, puoi eseguire
l'upgrade dalla sandbox.
Per ulteriori informazioni, consulta Risoluzione degli errori di quota di BigQuery. |
rateLimitExceeded | 403 | Questo errore viene restituito se il progetto supera un limite di frequenza a breve termine inviando troppe richieste troppo rapidamente. Ad esempio, consulta i limiti di frequenza per i job di query e i limiti di frequenza per le 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 Risoluzione degli errori di quota di BigQuery. |
resourceInUse | 400 | Questo errore viene restituito quando provi a eliminare un set di dati contenente tabelle o quando provi a eliminare un job in esecuzione. | Svuota il set di dati prima di tentare di eliminarlo o attendi il completamento di un job prima di eliminarlo. |
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 Risolvere gli errori relativi al superamento delle risorse. |
responseTooLarge | 403 | Questo errore viene restituito quando i risultati della query sono superiori alle
dimensioni massime della risposta. Alcune query vengono eseguite in più fasi e questo errore viene restituito quando una qualsiasi fase restituisce una dimensione della risposta troppo grande, anche se il risultato finale è inferiore al massimo. Questo errore viene restituito in genere
quando le query utilizzano una clausola ORDER BY . |
A volte può essere utile aggiungere una clausola LIMIT o rimuovere la clausola ORDER BY . Se vuoi assicurarti che possano essere restituiti risultati di grandi dimensioni, puoi impostare la proprietà allowLargeResults su true e specificare una tabella di destinazione. Per ulteriori informazioni, consulta
Scrivere 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 basate su dati gestiti da altri team di prodotti Google. Questo errore indica che una di queste tabelle non è disponibile. | Quando ricevi questo messaggio di errore, puoi riprovare a inviare la richiesta (consulta i suggerimenti per la risoluzione dei problemi relativi a internalError) o contattare il team di prodotto Google che ti ha concesso l'accesso ai suoi dati. |
timeout | 400 | Timeout del job. | Valuta la possibilità di ridurre il volume di lavoro eseguito dall'operazione in modo che possa essere completata entro il limite impostato. Consulta la sezione 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 dalla specifica OAuth2.
{"error" : "description_string"}
L'errore è accompagnato da un errore HTTP 400
Bad Request o da un errore HTTP 401
Unauthorized. description_string
è uno dei
codici di errore definiti dalla specifica OAuth2. Ad esempio:
{"error":"invalid_client"}
Errori di revisione
Puoi utilizzare l'esploratore dei log per visualizzare gli errori di autenticazione per job, utenti o altri ambiti specifici. Di seguito sono riportati diversi esempi di filtri di Explorer dei log che puoi utilizzare per esaminare gli errori di autenticazione.
- Cerca i job non riusciti con problemi di autorizzazione negli audit log di 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'utente o dell'account di servizio.- Cerca le modifiche ai criteri IAM nei log di controllo delle attività di amministrazione:
protoPayload.methodName=~"SetIamPolicy" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
- Cerca le modifiche a un set di dati BigQuery specifico negli audit log per l'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 risorsaDATASET_ID
: l'ID del set di dati contenente la risorsa
Messaggi di errore relativi alla connettività
La tabella seguente elenca i messaggi di errore che potresti visualizzare a causa di problemi di connettività intermittenti quando utilizzi le librerie client o chiami l'API BigQuery dal tuo codice:
Messaggio di errore | Libreria client o API | Risoluzione dei problemi |
---|---|---|
com.google.cloud.bigquery.BigQueryException: Read timed out | Java | Imposta un valore di timeout maggiore. |
La connessione è stata interrotta: javax.net.ssl.SSLException: java.net.SocketException: Connessione reimpostata in com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) | Java | Implementa un meccanismo di ripetizione e imposta un valore di timeout maggiore. |
javax.net.ssl.SSLHandshakeException: l'host remoto ha terminato l'handshake | Java | Implementa un meccanismo di ripetizione e imposta un valore di timeout maggiore. |
Connessione interrotta. RemoteDisconnected('Remote end closed connection without response' | Python | Imposta un valore di timeout maggiore. |
SSLEOFError (EOF si è verificato in violazione del protocollo) | Python | Questo errore viene restituito anziché un errore HTTP 413 (ENTITY_TOO_LARGE ). Riduci
le dimensioni della richiesta. |
TaskCanceledException: un'attività è stata annullata | Libreria .NET | Aumenta il valore del timeout lato client. |
Messaggi di errore della console Google Cloud
La tabella seguente elenca i messaggi di errore che potresti visualizzare mentre lavori 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, ad esempio quando fai clic su un set di dati o su un altro tipo di link e la pagina non può essere visualizzata. | Passa alla modalità di navigazione in incognito o privata del browser e ripeti l'azione che ha generato l'errore. Se non viene visualizzato alcun errore in modalità di navigazione in incognito, l'errore potrebbe essere dovuto a un'estensione del browser, ad esempio un blocco degli annunci. Disattiva le estensioni del browser quando non sei in modalità di navigazione in incognito e controlla se il problema si risolve. |