Mensajes de error

En este documento, se describen los mensajes de error que puedes encontrar cuando trabajas con BigQuery, incluidos los códigos de error HTTP y los pasos sugeridos para la solución de problemas.

Para obtener más información sobre los errores de consulta, consulta Soluciona errores de consulta.

Para obtener más información sobre los errores de inserción de transmisión, consulta Soluciona problemas de inserción de transmisión.

Tabla de error

Las respuestas de la API de BigQuery incluyen un código de error de HTTP y un objeto de errores en el cuerpo de la respuesta. Un objeto de error generalmente es uno de los siguientes:

La columna mensaje de error en la siguiente tabla se asigna a la propiedad reason en un objeto ErrorProto.

Esta tabla no incluye todos los errores HTTP posibles o cualquier otro error de red. Por lo tanto, no supongas que hay un objeto presente en cada respuesta de error de BigQuery. Además, es posible que recibas diferentes errores u objetos de error si usas las bibliotecas cliente de Cloud para la API de BigQuery. Para obtener más información, consulta Bibliotecas cliente de la API de BigQuery.

Si recibes un código de respuesta HTTP que no aparece en la lista a continuación, el código de respuesta indica un problema o un resultado esperado con la solicitud HTTP. Los códigos de respuesta en el rango 5xx indican un error del servidor. Si recibes un código de respuesta 5xx, vuelve a intentar la solicitud más tarde. En algunos casos, un servidor intermedio puede mostrar un código de respuesta 5xx, como un proxy. Examina los encabezados de respuesta y de respuesta para obtener detalles sobre el error. Para obtener una lista completa de los códigos de respuesta HTTP, consulta Códigos de respuesta HTTP.

Si usas la herramienta de línea de comandos de bq para verificar el estado del trabajo, según la configuración predeterminada, no se muestra el objeto de error. Para ver el objeto de error y la propiedad reason correspondiente que se asigna a la siguiente tabla, usa la marca --format=prettyjson. Por ejemplo, bq --format=prettyjson show -j <job id>. Para ver el registro detallado de la herramienta de bq, usa --apilog=stdout. Para obtener más información acerca de cómo solucionar problemas de la herramienta de bq, consulta Depuración.

Mensaje de error Código HTTP Descripción Soluciona problemas
accessDenied 403 Se muestra este error cuando intentas acceder a un recurso al que no tienes acceso, como un conjunto de datos, una tabla, una vista o un trabajo. También se muestra cuando intentas modificar un objeto de solo lectura. Comunícate con el propietario del recurso y solicita acceso al recurso para el usuario identificado por el valor principalEmail en el registro de auditoría del error.
backendError 500 o 503 Este error se muestra cuando hay una falla temporal del servidor, como un problema de conexión de red o una sobrecarga del servidor. En general, debes esperar unos segundos y volver a intentar realizar la operación. Si el problema se repite, reintenta con una retirada exponencial. Sin embargo, existen dos casos especiales en la solución de este error: el de las llamadas jobs.get y el de las llamadas jobs.insert.

llamadas jobs.get

  • Si recibes un error 503 cuando sondeas jobs.get, espera unos segundos y sondea de nuevo.
  • Si el trabajo se completa, pero incluye un objeto de error que contiene backendError, el trabajo falló. Puedes volver a intentarlo de forma segura sin preocuparte por la coherencia de los datos.

Llamadas a jobs.insert

Si recibes este error durante una llamada a jobs.insert, no queda claro si el trabajo se realizó de forma correcta. En este caso, deberás volver a intentarlo.

badRequest 400 El error 'UPDATE or DELETE statement over table <project.dataset.table> would affect rows in the streaming buffer, which is not supported' puede ocurrir cuando algunas filas transmitidas recientemente en una tabla pueden no estar disponibles para las operaciones DML (DELETE, UPDATE, MERGE), por lo general, durante unos pocos minutos, pero en casos excepcionales, hasta 90 minutos. Para obtener más información, consulta Disponibilidad de datos de transmisión y Limitaciones de DML. Para ver si los datos están disponibles para las operaciones de DML de tabla, verifica la respuesta tables.get de la sección StreamingBuffer. Si la sección streamingBuffer está ausente, los datos de la tabla están disponibles para las operaciones de DML. También puedes usar el campo streamingBuffer.oldestEntryTime para identificar la antigüedad de los registros en el búfer de transmisión.
billingNotEnabled 403 Se muestra este error cuando la facturación no está habilitada para el proyecto. Habilita la facturación para el proyecto en la consola de Google Cloud.
billingTierLimitExceeded 400 Se muestra este error cuando el valor de statistics.query.billingTier para un trabajo a pedido supera los 100. Esto ocurre cuando las consultas a pedido usan demasiada CPU en relación con la cantidad de datos analizados. Para obtener instrucciones sobre cómo inspeccionar los detalles de los trabajos, consulta Administra trabajos. Este error suele ser el resultado de la ejecución de uniones cruzadas ineficientes, ya sea de forma explícita o implícita, por ejemplo, debido a una condición de unión inexacta. Estos tipos de consultas no son adecuadas para los precios según demanda debido al alto consumo de recursos y, en general, es posible que no escalen bien. Puedes optimizar la consulta o cambiar para usar el modelo de precios basado en la capacidad (ranuras) con el objetivo de resolver este error. Para obtener información sobre la optimización de consultas, consulta Cómo evitar antipatrones de SQL.
Bloqueado 403 Se muestra este error cuando BigQuery pone en la lista de bloqueo de manera temporal la operación que intentaste realizar, por lo general, para evitar una suspensión del servicio. Comunícate con el equipo de asistencia para obtener más información.
duplicar 409 Se muestra este error cuando intentas crear un trabajo, un conjunto de datos o una tabla que ya existe. También se muestra cuando la propiedad writeDisposition de un trabajo se establece en WRITE_EMPTY y la tabla de destino a la que accede el trabajo ya existe. Cambia el nombre del recurso que intentas crear o cambia el valor writeDisposition en el trabajo.
internalError 500 Se muestra este error cuando ocurre un error interno en BigQuery. Espera de acuerdo con los requisitos de retirada que se describen en el Acuerdo de Nivel de Servicio de BigQuery y, luego, vuelve realizar la operación. Si el error persiste, comunícate con el equipo de asistencia o informa un error con la herramienta de seguimiento de errores de BigQuery. También puedes reducir la frecuencia de este error a través de las reservas.
no válido 400 Se muestra este error cuando hay algún tipo de entrada no válida que no es una consulta no válida, como campos obligatorios faltantes o un esquema de tabla no válido. Las consultas no válidas muestran un error invalidQuery.
invalidQuery 400 Se muestra este error cuando intentas ejecutar una consulta no válida. Comprueba tu consulta en busca de errores de sintaxis. La referencia de consulta contiene descripciones y ejemplos de cómo crear consultas válidas.
invalidUser 400 Se muestra este error cuando intentas programar una consulta con credenciales de usuario no válidas. Actualiza las credenciales del usuario, como se explica en Programa consultas.
jobBackendError 400 Se muestra este error cuando el trabajo se creó correctamente, pero falló con un error interno. Es posible que veas este error en jobs.query o jobs.getQueryResults. Vuelve a intentar el trabajo con una jobId nueva. Si el error persiste, comunícate con el equipo de asistencia.
jobInternalError 400 Se muestra este error cuando el trabajo se creó correctamente, pero falló con un error interno. Es posible que veas este error en jobs.query o jobs.getQueryResults. Vuelve a intentar el trabajo con una jobId nueva. Si el error persiste, comunícate con el equipo de asistencia.
jobRateLimitExceeded 400 Se muestra este error cuando el trabajo se creó correctamente, pero falló con un error de rateLimitExceeded. Es posible que veas este error en jobs.query o jobs.getQueryResults. Usa la retirada exponencial para reducir la frecuencia de solicitudes y, luego, vuelve a intentar la tarea con un jobId nuevo.
notFound 404 Se muestra este error cuando haces referencia a un recurso (un conjunto de datos, una tabla o un trabajo) que no existe o cuando la ubicación de la solicitud no coincide con la ubicación del recurso (por ejemplo, la ubicación en la que se ejecuta un trabajo). Esto también puede ocurrir cuando usas decoradores de instantáneas para hacer referencia a las tablas borradas que recibieron transmisiones hace poco. Corrige los nombres de los recursos, especifica la ubicación de forma correcta o espera al menos 6 horas después de la transmisión antes de consultar una tabla borrada.
notImplemented 501 Se muestra este error de trabajo cuando intentas acceder a una característica no implementada. Comunícate con el equipo de asistencia para obtener más información.
proxyAuthenticationRequired 407 Este error se muestra entre el entorno del cliente y el servidor proxy cuando la solicitud carece de credenciales de autenticación válidas para el servidor proxy. Para obtener más información, consulta Se requiere autenticación de proxy [407 Proxy Authentication Required]. La solución de problemas es específica de tu entorno. Si recibes este error mientras trabajas en Java, asegúrate de haber configurado las propiedades jdk.http.auth.tunneling.disabledSchemes= y jdk.http.auth.proxying.disabledSchemes= sin ningún valor después del signo igual.
quotaExceeded 403 Se muestra este error cuando tu proyecto excede una cuota de BigQuery o una cuota personalizada. También se muestra cuando no estableciste la facturación y excediste el nivel gratuito de consultas. Observa la propiedad message del objeto de error para obtener más información sobre qué cuota se superó. Para restablecer o aumentar una cuota de BigQuery, comunícate con el equipo de asistencia. Para modificar una cuota personalizada, envía una solicitud desde la página de la consola de Google Cloud. Si recibes este error cuando usas la zona de pruebas de BigQuery, puedes actualizar desde la zona de pruebas.

Si deseas obtener más información, consulta Soluciona errores de cuota de BigQuery.

rateLimitExceeded 403 Se muestra este error si el proyecto excede un límite de frecuencia a corto plazo mediante el envío de demasiadas solicitudes muy rápido. Por ejemplo, consulta los límites de frecuencia de los trabajos de consulta y los límites de frecuencia de las solicitudes a la API. Disminuye el porcentaje de solicitudes.

Si crees que tu proyecto no excedió uno de estos límites, comunícate con el equipo de asistencia.

Si deseas obtener más información, consulta Soluciona errores de cuota de BigQuery.

resourceInUse 400 Se muestra este error cuando intentas borrar un conjunto de datos que contiene tablas o cuando intentas borrar un trabajo que está en ejecución. Vacía el conjunto de datos antes de intentar borrarlo o espera a que un trabajo se complete para borrarlo.
resourcesExceeded 400 Se muestra este error cuando tu trabajo usa demasiados recursos. Se muestra este error cuando tu trabajo usa demasiados recursos. Para obtener información sobre la solución de problemas, consulta Soluciona problemas de errores de recursos excedidos.
responseTooLarge 403 Se muestra este error cuando los resultados de tu consulta son más grandes que el tamaño máximo de respuesta. Algunas consultas se ejecutan en múltiples etapas. Este error se muestra cuando cualquiera de las etapas muestra un tamaño de respuesta que es demasiado grande, incluso si el resultado final es menor que el máximo. Se suele mostrar este error cuando las consultas usan una cláusula ORDER BY. A veces, agregar una cláusula LIMIT o quitar la cláusula ORDER BY sirve de ayuda. Si deseas garantizar que se puedan mostrar resultados grandes, puedes establecer la propiedad allowLargeResults en true y especificar una tabla de destino. Para obtener más información, consulta Escribe resultados de consultas grandes.
Detenido 200 Se muestra este código de estado cuando se cancela un trabajo.
tableUnavailable 400 Ciertas tablas de BigQuery se respaldan con datos que administran otros equipos de productos de Google. Este error indica que una de esas tablas no se encuentra disponible. Cuando encuentres este mensaje de error, puedes volver a enviar tu solicitud (consulta sugerencias para solucionar problemas internalError) o comunicarte con el equipo de productos de Google que te otorgó el acceso a sus datos.
timeout 400 Se agotó el tiempo de espera del trabajo. Considera reducir la cantidad de trabajo que realiza tu operación para que pueda completarse dentro del límite establecido. Consulta Cuotas y límites.

Muestra de respuesta de error

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

Errores de autenticación

Los errores del sistema de generación de tokens OAuth muestran el siguiente objeto JSON, que define la especificación OAuth2.

{"error" : "description_string"}

Este error va acompañado de un error HTTP 400 de solicitud incorrecta o un error HTTP 401 de falta de autorización. description_string es uno de los códigos de error que define la especificación OAuth2. Por ejemplo:

{"error":"invalid_client"}

Revisa los errores

Puedes usar el explorador de registros para ver los errores de autenticación de trabajos, usuarios o otros alcances específicos. A continuación, se muestran varios ejemplos de filtros del explorador de registros que puedes usar para revisar los errores de autenticación.

Busca trabajos fallidos con problemas de permisos en los registros de auditoría de política denegada:
    resource.type="bigquery_resource"
    protoPayload.status.message=~"Access Denied"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
  
Busca un usuario o una cuenta de servicio específicos que se usen para la autenticación:
    resource.type="bigquery_resource"
    protoPayload.authenticationInfo.principalEmail="EMAIL"
  

Reemplaza EMAIL por la dirección de correo electrónico del usuario o de la cuenta de servicio.

Busca cambios en la política de IAM en los registros de auditoría de actividad del administrador:
    protoPayload.methodName=~"SetIamPolicy"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
  
Busca cambios en un conjunto de datos específico de BigQuery en los registros de auditoría de acceso a los datos:
    resource.type="bigquery_resource"
    protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID"
    logName=projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
  

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto que contiene el recurso
  • DATASET_ID: El ID del conjunto de datos que contiene el recurso

Mensajes de error de conectividad

En la siguiente tabla, se enumeran los mensajes de error que puedes ver debido a problemas de conectividad intermitente cuando usas las bibliotecas cliente o llamas a la API de BigQuery desde tu código:

Mensaje de error Biblioteca cliente o API Soluciona problemas
com.google.cloud.bigquery.BigQueryException: Se agotó el tiempo de espera de la operación de lectura Java Establece un valor de tiempo de espera mayor.
Se cerró la conexión: javax.net.ssl.SSLException: java.net.SocketException: Se restableció la conexión en com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) Java Implementa un mecanismo de reintento y establece un valor de tiempo de espera mayor.
javax.net.ssl.SSLHandshakeException: el host remoto finalizó el protocolo de enlace Java Implementa un mecanismo de reintento y establece un valor de tiempo de espera mayor.
Se anuló la conexión. RemoteDisconnected('Remote end closed connection without response' Python Establece un valor de tiempo de espera mayor.
SSLEOFError (se produjo un error de fin de archivo en violación del protocolo) Python Este error se muestra en lugar de un error HTTP 413 (ENTITY_TOO_LARGE). Reduce el tamaño de la solicitud.
TaskCanceledException: se canceló una tarea Biblioteca de .NET Aumenta el valor de tiempo de espera del cliente.

Mensajes de error de la consola de Google Cloud

En la siguiente tabla, se enumeran los mensajes de error que pueden aparecer cuando trabajas en la consola de Google Cloud.

Mensaje de error Descripción Soluciona problemas
Respuesta de error desconocida del servidor Este error se muestra cuando la consola de Google Cloud recibe un error desconocido del servidor. Por ejemplo, cuando haces clic en un conjunto de datos o en otro tipo de vínculo y la página no puede mostrarse. Cambia al modo incógnito o privado del navegador, y repite la acción que generó el error. Si no se muestra ningún error en el modo Incógnito, el error puede deberse a una extensión del navegador, como un bloqueador de anuncios. Inhabilita las extensiones del navegador sin usar el modo Incógnito y verifica si se resolvió el problema.