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:
- Objek
errors
, yang berisi array objekErrorProto
. - Objek
errorResults
, yang berisi satu objekErrorProto
.
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
panggilan Jika Anda menerima error ini saat melakukan panggilan |
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. |
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 resourceDATASET_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. |
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. |