Messaggi di errore
Questo documento descrive i messaggi di errore che potresti visualizzare quando utilizzi BigQuery, inclusi i codici di errore HTTP e i passaggi per la risoluzione dei problemi suggeriti.
Per maggiori informazioni sugli errori delle query, consulta Risolvere gli errori delle query.
Per maggiori 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 nel corpo della risposta. Un oggetto di errore può essere generalmente uno dei seguenti:
- Un oggetto
errors
, che contiene un array di oggettiErrorProto
. - Un oggetto
errorResults
, che contiene un singolo oggettoErrorProto
.
La colonna Messaggio di errore nella seguente tabella è mappata 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 sia presente un oggetto di errore in ogni risposta di errore di BigQuery. Inoltre, se utilizzi le librerie client di Cloud per l'API BigQuery, potresti ricevere errori o oggetti di errore diversi. 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 un codice di risposta 5xx
, riprova a eseguire la richiesta in un secondo momento. In alcuni casi, un codice di risposta 5xx
potrebbe essere
restituito da un server intermedio, ad esempio un proxy. Esamina il corpo della risposta e le intestazioni
per i dettagli dell'errore. Per un elenco completo dei codici di risposta HTTP, vedi Codici di risposta HTTP.
Se utilizzi lo strumento a riga di comando bq per verificare lo stato del job, l'oggetto di errore non viene restituito per impostazione predefinita. Per visualizzare
l'oggetto di errore e la proprietà reason
corrispondente mappata alla seguente tabella, 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 scoprire di più sulla risoluzione dei problemi dello 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, una tabella, una vista 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 nell'audit log dell'errore. |
backendError | 500 o 503 | Questo errore viene restituito quando si verifica un errore 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 risolvere questo errore: chiamate jobs.get e chiamate jobs.insert .
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 trasmesse 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 maggiori informazioni, vedi Disponibilità dei flussi di dati e
Limitazioni DML. |
Per verificare se i dati sono disponibili per le operazioni DML delle tabelle, 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 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
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 ispezionare le statistiche dei job, consulta Gestione dei job.
|
Il più delle volte questo errore deriva dall'esecuzione di cross join inefficienti, in modo esplicito o implicito, ad esempio a causa di una condizione di join inesatta. Questi tipi di query non sono adatti ai prezzi on demand a causa dell'elevato consumo di risorse e, in generale, potrebbero non scalare bene. Per risolvere questo errore, puoi ottimizzare la query o passare all'utilizzo del modello di prezzi basato sulla capacità (slot). Per informazioni sull'ottimizzazione delle query, consulta Evitare gli anti-pattern SQL. |
bloccato | 403 | Questo errore viene restituito quando BigQuery ha temporaneamente inserito nella lista bloccata 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 cerca di creare un job, un set di dati o una tabella già esistente. L'errore viene restituito 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 backoff descritti nell'Accordo sul livello del servizio di BigQuery, quindi riprova a eseguire l'operazione. Se l'errore continua a verificarsi, contatta l'assistenza o segnala un bug utilizzando lo strumento Issue Tracker di BigQuery. Puoi anche ridurre la frequenza di questo errore utilizzando Prenotazioni. |
non valido | 400 |
Questo errore viene restituito quando è presente un qualsiasi tipo di input non valido, diverso da una query non valida, ad esempio campi obbligatori mancanti 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 se nella query sono presenti errori di sintassi. Il riferimento per query contiene descrizioni ed esempi su come creare query valide. |
invalidUser | 400 | Questo errore viene restituito quando cerchi di pianificare una query con credenziali utente non valide. | Aggiorna le credenziali utente, come spiegato in Programmazione delle query. |
jobBackendError | 400 | Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito con un errore interno. Potresti visualizzare questo errore in jobs.query o
jobs.getQueryResults . |
Riprova con un nuovo jobId . Se l'errore continua a verificarsi, contatta l'assistenza. |
jobInternalError | 400 | Questo errore viene restituito quando il job è stato creato correttamente, ma non è riuscito con un errore interno. Potresti visualizzare questo errore in jobs.query o
jobs.getQueryResults . |
Riprova con un nuovo jobId . Se l'errore continua a verificarsi, contatta l'assistenza. |
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 della risorsa (ad esempio, la località in cui è in esecuzione un job). Questo può verificarsi anche quando si utilizzano decoratori di tabelle per fare riferimento a tabelle eliminate di cui è stato eseguito il flussi di flussi di recente. | Correggi i nomi delle risorse, specifica correttamente la località o attendi almeno 6 ore dopo il flusso di dati prima di eseguire una 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 una quota di BigQuery, una quota personalizzata oppure 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 di BigQuery, contatta l'assistenza.
Per modificare una quota personalizzata, invia una richiesta dalla pagina della console Google Cloud. Se ricevi questo errore utilizzando la sandbox di BigQuery, puoi eseguire l'upgrade dalla sandbox.
Per maggiori 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 la sezione sui limiti di frequenza per i job di query e sui limiti di frequenza per le richieste API. |
Rallenta la tasso di richieste.
Se ritieni che il progetto non abbia superato uno di questi limiti, contatta l'assistenza. Per maggiori informazioni, consulta Risoluzione degli errori di quota di BigQuery. |
resourceInUse | 400 | Questo errore viene restituito quando provi a eliminare un set di dati che contiene tabelle o a eliminare un job attualmente 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 alla dimensione massima della risposta. Alcune query vengono eseguite in più fasi e questo errore viene restituito quando ogni fase restituisce una dimensione della risposta troppo grande, anche se il risultato finale è inferiore al valore massimo. Di solito questo errore restituisce
quando le query utilizzano una clausola ORDER BY . |
A volte l'aggiunta di una clausola LIMIT può essere utile o la rimozione della clausola ORDER BY . Per assicurarti che vengano restituiti risultati di grandi dimensioni, puoi impostare la proprietà allowLargeResults su true e specificare una tabella di destinazione. Per maggiori informazioni, consulta la sezione
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 team di prodotto Google. Questo errore indica che una di queste tabelle non è disponibile. | Quando viene visualizzato questo messaggio di errore, puoi riprovare la richiesta (consulta i suggerimenti per la risoluzione dei problemi internalError) o contattare il team di prodotto Google che ti ha concesso l'accesso ai suoi dati. |
timeout | 400 | Il job è scaduto. | Valuta la possibilità di ridurre la quantità di lavoro eseguito 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 dalla specifica OAuth2.
{"error" : "description_string"}
L'errore è accompagnato da un errore HTTP 400
di richiesta non valida o da un errore HTTP 401
non autorizzato. 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 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 risorsaDATASET_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 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 |
---|---|---|
La connessione è stata disattivata: javax.net.ssl.SSLEccezione: java.net.Socketeccezione: Connessione reimpostata all'indirizzo 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 seguente sono elencati 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 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 si verifica alcun errore nella 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 in modalità di navigazione in incognito e verifica se il problema si risolve. |