Pesan error

Dokumen ini menjelaskan pesan error yang mungkin Anda temukan saat menggunakan BigQuery, termasuk kode error HTTP dan langkah pemecahan masalah yang disarankan.

Untuk mengetahui informasi selengkapnya tentang error kueri, lihat Memecahkan masalah error kueri.

Untuk mengetahui informasi selengkapnya tentang error streaming insert, lihat Memecahkan masalah streaming insert.

Tabel error

Respons dari BigQuery API mencakup kode error HTTP dan objek error dalam isi respons. Objek error biasanya berupa salah satu dari hal berikut:

Kolom Pesan error dalam tabel berikut dipetakan ke properti reason dalam objek ErrorProto.

Tabel ini tidak mencakup semua kemungkinan error HTTP atau error jaringan lainnya. Oleh karena itu, jangan berasumsi bahwa objek error ada di setiap respons error dari BigQuery. Selain itu, Anda mungkin menerima error atau objek error yang berbeda jika menggunakan Library Klien Cloud untuk BigQuery API. Untuk informasi selengkapnya, lihat Library Klien BigQuery API.

Jika Anda menerima kode respons HTTP yang tidak muncul di tabel berikut, kode respons tersebut menunjukkan masalah atau hasil yang diharapkan dengan permintaan HTTP. Kode respons dalam rentang 5xx menunjukkan error sisi server. Jika Anda menerima kode respons 5xx, coba lagi permintaan tersebut nanti. Dalam beberapa kasus, kode respons 5xx mungkin ditampilkan oleh server perantara seperti proxy. Periksa isi respons dan header respons untuk mengetahui detail tentang error tersebut. Untuk mengetahui daftar lengkap kode respons HTTP, lihat kode respons HTTP.

Jika Anda menggunakan alat command line bq untuk memeriksa status tugas, objek error tidak akan ditampilkan secara default. Untuk melihat objek error dan properti reason yang sesuai yang dipetakan ke tabel berikut, gunakan flag --format=prettyjson. Contohnya, bq --format=prettyjson show -j <job id> Untuk melihat logging panjang alat bq, gunakan --apilog=stdout. Untuk mempelajari lebih lanjut cara memecahkan masalah alat bq, lihat Proses debug.

Pesan error Kode HTTP Deskripsi Pemecahan masalah
accessDenied 403 Error ini ditampilkan saat Anda mencoba mengakses resource seperti set data, tabel, tampilan, atau tugas yang tidak dapat Anda akses. Error ini juga muncul saat Anda mencoba memodifikasi objek hanya baca. Hubungi pemilik resource dan minta akses ke resource untuk pengguna yang diidentifikasi oleh nilai principalEmail di log audit error.
backendError 500 atau 503 Error ini ditampilkan saat terjadi kegagalan server sementara, seperti masalah koneksi jaringan atau kelebihan beban server. Secara umum, tunggu beberapa detik dan coba lagi. Jika masalah terulang, coba lagi dengan backoff eksponensial. Namun, ada dua kasus khusus untuk memecahkan masalah error ini: panggilan jobs.get dan panggilan jobs.insert.

panggilan jobs.get

  • Jika Anda menerima error 503 saat melakukan polling jobs.get, tunggu beberapa detik lalu lakukan polling lagi.
  • Jika tugas selesai, tetapi menyertakan objek error yang berisi backendError, tugas akan gagal. Anda dapat mencoba lagi tugas tersebut dengan aman tanpa mengkhawatirkan konsistensi data.

panggilan jobs.insert

Jika Anda menerima error ini saat melakukan panggilan jobs.insert, tidak jelas apakah tugas berhasil. Dalam situasi ini, Anda harus mencoba lagi tugas tersebut.

badRequest 400 Error 'UPDATE or DELETE statement over table <project.dataset.table> would affect rows in the streaming buffer, which is not supported' dapat terjadi saat beberapa baris yang baru di-streaming dalam tabel mungkin tidak tersedia untuk operasi DML (DELETE, UPDATE,MERGE), biasanya untuk beberapa menit, tetapi dalam kasus yang jarang terjadi, hingga 90 menit. Untuk mengetahui informasi selengkapnya, lihat Ketersediaan data streaming dan Batasan DML. Guna mengetahui apakah data tersedia untuk operasi tabel DML, periksa respons tables.get untuk bagian streamingBuffer. Jika bagian streamingBuffer tidak ada, data tabel akan tersedia untuk operasi DML. Anda juga dapat menggunakan kolom streamingBuffer.oldestEntryTime untuk mengidentifikasi usia kumpulan data dalam buffering streaming.
billingNotEnabled 403 Error ini ditampilkan saat penagihan tidak diaktifkan untuk project tersebut. Aktifkan penagihan untuk project di Konsol Google Cloud.
billingTierLimitExceeded 400 Error ini ditampilkan saat nilai statistics.query.billingTier untuk Tugas on demand melebihi 100. Hal ini terjadi saat kueri on-demand menggunakan terlalu banyak CPU dibandingkan dengan jumlah data yang dipindai. Untuk petunjuk cara memeriksa detail tugas, lihat Mengelola tugas. Error ini paling sering dihasilkan dari eksekusi cross-join yang tidak efisien, baik secara eksplisit maupun implisit, misalnya karena kondisi join yang tidak tepat. Jenis kueri ini tidak cocok untuk harga on-demand karena konsumsi resource yang tinggi, dan secara umum mungkin tidak diskalakan dengan baik. Anda dapat mengoptimalkan kueri atau beralih menggunakan model harga berbasis kapasitas (slot) untuk mengatasi error ini. Untuk informasi tentang cara mengoptimalkan kueri, lihat Menghindari anti-pola SQL.
blocked 403 Error ini muncul saat BigQuery memasukkan operasi yang Anda coba lakukan ke daftar yang ditolak untuk sementara, biasanya untuk mencegah pemadaman layanan. Hubungi dukungan untuk informasi selengkapnya.
duplicate 409 Error ini muncul saat mencoba membuat tugas, set data, atau tabel yang sudah ada. Error ini juga ditampilkan saat properti writeDisposition tugas ditetapkan ke WRITE_EMPTY dan tabel tujuan yang diakses oleh tugas sudah ada. Ganti nama resource yang ingin Anda buat, atau ubah nilai writeDisposition dalam tugas.
internalError 500 Error ini ditampilkan saat terjadi error internal dalam BigQuery. Tunggu sesuai dengan persyaratan back-off yang dijelaskan dalam Perjanjian Tingkat Layanan BigQuery, lalu coba operasi lagi. Jika error terus terjadi, hubungi dukungan atau laporkan bug menggunakan Issue Tracker BigQuery. Anda juga dapat mengurangi frekuensi error ini menggunakan Reservations.
invalid 400 Error ini ditampilkan saat ada jenis input yang tidak valid selain kueri yang tidak valid, misalnya kolom wajib diisi tidak ada atau skema tabel yang tidak valid. Kueri yang tidak valid menampilkan error invalidQuery.
invalidQuery 400 Error ini muncul saat Anda mencoba menjalankan kueri yang tidak valid. Periksa kueri Anda untuk menemukan error sintaksis. Referensi kueri berisi deskripsi dan contoh cara membuat kueri yang valid.
invalidUser 400 Error ini ditampilkan saat Anda mencoba menjadwalkan kueri dengan kredensial pengguna yang tidak valid. Muat ulang kredensial pengguna, seperti yang dijelaskan dalam Menjadwalkan kueri.
jobBackendError 400 Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan error internal. Anda mungkin melihat error ini di jobs.query atau jobs.getQueryResults. Coba lagi tugas dengan jobId baru. Jika error terus terjadi, hubungi dukungan.
jobInternalError 400 Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan error internal. Anda mungkin melihat error ini di jobs.query atau jobs.getQueryResults. Coba lagi tugas dengan jobId baru. Jika error terus terjadi, hubungi dukungan.
jobRateLimitExceeded 400 Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan error rateLimitExceeded. Anda mungkin melihat error ini di jobs.query atau jobs.getQueryResults. Gunakan backoff eksponensial untuk mengurangi frekuensi permintaan, lalu coba lagi tugas dengan jobId baru.
notFound 404 Error ini muncul saat Anda merujuk ke resource (set data, tabel, atau tugas) yang tidak ada, atau jika lokasi dalam permintaan tidak cocok dengan lokasi resource (misalnya, lokasi tempat tugas dijalankan). Hal ini juga dapat terjadi saat menggunakan dekorator tabel untuk merujuk ke tabel yang dihapus yang baru-baru ini di-streaming. Perbaiki nama resource, tentukan lokasi dengan benar, atau tunggu minimal 6 jam setelah streaming sebelum membuat kueri tabel yang dihapus.
notImplemented 501 Error tugas ini muncul saat Anda mencoba mengakses fitur yang tidak diimplementasikan. Hubungi dukungan untuk informasi selengkapnya.
proxyAuthenticationRequired 407 Error ini ditampilkan antara lingkungan klien dan server proxy saat permintaan tidak memiliki kredensial autentikasi yang valid untuk server proxy. Untuk informasi selengkapnya, lihat 407 Proxy Authentication Required. Pemecahan masalah bersifat khusus untuk lingkungan Anda. Jika Anda menerima error ini saat bekerja di Java, pastikan Anda telah menetapkan properti jdk.http.auth.tunneling.disabledSchemes= dan jdk.http.auth.proxying.disabledSchemes= tanpa nilai setelah tanda sama dengan.
quotaExceeded 403 Error ini ditampilkan saat project Anda melebihi kuota BigQuery, kuota kustom, atau saat Anda belum menyiapkan penagihan dan Anda telah melampaui paket gratis untuk kueri. Lihat properti message objek error untuk mengetahui informasi selengkapnya tentang kuota yang terlampaui. Untuk mereset atau meningkatkan kuota BigQuery, hubungi dukungan. Untuk mengubah kuota kustom, kirim permintaan dari halaman Google Cloud console. Jika menerima error ini menggunakan sandbox BigQuery, Anda dapat melakukan upgrade dari sandbox.

Untuk informasi selengkapnya, lihat Memecahkan masalah error kuota BigQuery.

rateLimitExceeded 403 Error ini ditampilkan jika project Anda melebihi batas kapasitas jangka pendek karena mengirim terlalu banyak permintaan terlalu cepat. Misalnya, lihat batas kapasitas untuk tugas kueri dan batas kapasitas untuk permintaan API. Memperlambat rasio permintaan.

Jika yakin project Anda tidak melebihi salah satu batas ini, hubungi dukungan.

Untuk informasi selengkapnya, lihat Memecahkan masalah error kuota BigQuery.

resourceInUse 400 Error ini ditampilkan saat Anda mencoba menghapus set data yang berisi tabel atau saat Anda mencoba menghapus tugas yang sedang berjalan. Kosongkan set data sebelum mencoba menghapusnya, atau tunggu tugas selesai sebelum menghapusnya.
resourcesExceeded 400 Error ini muncul saat tugas Anda menggunakan terlalu banyak resource. Error ini muncul saat tugas Anda menggunakan terlalu banyak resource. Untuk informasi pemecahan masalah, lihat Memecahkan masalah error resource terlampaui.
responseTooLarge 403 Error ini ditampilkan saat hasil kueri Anda lebih besar dari ukuran respons maksimum. Beberapa kueri dijalankan dalam beberapa tahapan, dan error ini akan ditampilkan saat salah satu tahap menampilkan ukuran respons yang terlalu besar, meskipun hasil akhir lebih kecil dari maksimumnya. Error ini biasanya muncul saat kueri menggunakan klausa ORDER BY. Menambahkan klausa LIMIT terkadang dapat membantu, atau menghapus klausa ORDER BY. Jika ingin memastikan bahwa hasil yang besar dapat ditampilkan, Anda dapat menetapkan properti allowLargeResults ke true dan menentukan tabel tujuan. Untuk informasi selengkapnya, lihat Menulis hasil kueri yang besar.
stopped 200 Kode status ini ditampilkan saat tugas dibatalkan.
tableUnavailable 400 Tabel BigQuery tertentu didukung oleh data yang dikelola oleh tim produk Google lainnya. Error ini menunjukkan bahwa salah satu tabel ini tidak tersedia. Jika pesan error ini muncul, Anda dapat mencoba kembali permintaan tersebut (lihat saran pemecahan masalah internalError) atau menghubungi tim produk Google yang memberi Anda akses ke data mereka.
timeout 400 Waktu tugas habis. Pertimbangkan untuk mengurangi jumlah pekerjaan yang dilakukan oleh operasi Anda agar dapat diselesaikan sesuai batas yang ditetapkan. Lihat Kuota dan Batas.

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

Error autentikasi

Error yang ditampilkan oleh sistem pembuatan token OAuth akan menampilkan objek JSON berikut, seperti yang ditetapkan oleh spesifikasi OAuth2.

{"error" : "description_string"}

Error ini disertai dengan error Permintaan Buruk 400 HTTP atau error HTTP 401 Tidak Sah. description_string adalah salah satu kode error yang ditetapkan oleh spesifikasi OAuth2. Contoh:

{"error":"invalid_client"}

Meninjau error

Anda dapat menggunakan penjelajah log untuk melihat error autentikasi untuk tugas, pengguna, atau cakupan tertentu. Berikut adalah beberapa contoh filter penjelajah log yang dapat Anda gunakan untuk meninjau error autentikasi.

Telusuri tugas yang gagal dengan masalah izin di log audit Kebijakan Ditolak:
    resource.type="bigquery_resource"
    protoPayload.status.message=~"Access Denied"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
  
Telusuri pengguna atau akun layanan tertentu yang digunakan untuk autentikasi:
    resource.type="bigquery_resource"
    protoPayload.authenticationInfo.principalEmail="EMAIL"
  

Ganti EMAIL dengan alamat email pengguna atau akun layanan.

Telusuri perubahan kebijakan IAM di log audit Aktivitas Admin:
    protoPayload.methodName=~"SetIamPolicy"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
  
Telusuri perubahan pada set data BigQuery tertentu di log audit Akses Data:
    resource.type="bigquery_resource"
    protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID"
    logName=projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
  

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi resource
  • DATASET_ID: ID set data yang berisi resource

Pesan error konektivitas

Tabel berikut mencantumkan pesan error yang mungkin Anda lihat karena masalah konektivitas yang terputus-putus saat menggunakan library klien atau memanggil BigQuery API dari kode Anda:

Pesan error Library klien atau API Pemecahan masalah
com.google.cloud.bigquery.BigQueryException: Waktu tunggu baca habis Java Tetapkan nilai waktu tunggu yang lebih besar.
Koneksi telah dinonaktifkan: javax.net.ssl.SSLException: java.net.SocketException: Connection reset at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) Java Terapkan mekanisme percobaan ulang dan tetapkan nilai waktu tunggu yang lebih besar.
javax.net.ssl.SSLHandshakeException: Host jarak jauh menghentikan handshake Java Terapkan mekanisme percobaan ulang dan tetapkan nilai waktu tunggu yang lebih besar.
Koneksi dibatalkan. RemoteDisconnected('Remote end closed connection without response' Python Tetapkan nilai waktu tunggu yang lebih besar.
SSLEOFError (EOF terjadi karena melanggar protokol) Python Error ini ditampilkan, bukan error HTTP 413 (ENTITY_TOO_LARGE). Kurangi ukuran permintaan.
TaskCanceledException: Tugas dibatalkan Library .NET Meningkatkan nilai waktu tunggu di sisi klien.

Pesan error Konsol Google Cloud

Tabel berikut berisi pesan error yang mungkin Anda lihat saat bekerja di Konsol Google Cloud.

Pesan error Deskripsi Pemecahan masalah
Respons error tidak diketahui dari server. Error ini ditampilkan saat Konsol Google Cloud menerima error yang tidak diketahui dari server; misalnya , saat Anda mengklik set data atau jenis link lainnya, dan halaman tidak dapat ditampilkan. Beralihlah ke mode samaran atau pribadi di browser dan ulangi tindakan yang menyebabkan error. Jika tidak ada error yang menyebabkan mode samaran, maka error tersebut mungkin disebabkan oleh ekstensi browser, seperti pemblokir iklan. Nonaktifkan ekstensi browser Anda saat tidak dalam mode samaran, dan lihat apakah tindakan tersebut dapat menyelesaikan masalah.