Halaman ini menjelaskan kode error Spanner dan tindakan yang disarankan untuk
menangani error ini. Google API, termasuk Spanner, menggunakan
kode error kanonis yang ditentukan oleh google.rpc.Code
.
Jika permintaan Spanner berhasil, API akan menampilkan kode status
200 OK
HTTP beserta data yang diminta dalam isi respons.
Jika permintaan gagal, Spanner API akan menampilkan kode status HTTP 4xx
atau 5xx
yang secara umum mengidentifikasi kegagalan serta respons yang memberikan informasi yang lebih spesifik tentang error yang menyebabkan kegagalan.
Objek respons berisi satu kolom error
yang nilainya berisi
elemen berikut:
Elemen | Deskripsi |
---|---|
code |
Kode status HTTP yang secara umum mengidentifikasi kegagalan permintaan. |
message |
Informasi spesifik tentang kegagalan permintaan. |
status |
Kode error kanonis (google.rpc.Code ) untuk Google API. Kode yang mungkin ditampilkan oleh Spanner API tercantum di Kode Error. |
Jika permintaan yang dibuat dengan jenis konten application/x-protobuf
menghasilkan error, permintaan tersebut akan menampilkan pesan google.rpc.Status
serial sebagai payload.
Kode error
Cara yang direkomendasikan untuk mengklasifikasikan error adalah dengan memeriksa nilai kode error kanonis (google.rpc.Code
). Pada error JSON, kode ini muncul di kolom status
. Dalam error application/x-protobuf
, kolom tersebut berada di kolom code
.
Kode error | Deskripsi | Tindakan yang disarankan |
---|---|---|
ABORTED |
Operasi dibatalkan, biasanya karena masalah serentak seperti kegagalan pemeriksaan sequencer atau pembatalan transaksi. Menunjukkan bahwa permintaan bertentangan dengan permintaan lain. | Untuk commit non-transaksional: Coba lagi permintaan atau susun entity Anda untuk mengurangi pertentangan. Untuk permintaan yang merupakan bagian dari commit transactional: Coba lagi seluruh transaksi atau susun entity Anda untuk mengurangi pertentangan. |
ALREADY_EXISTS |
Entity yang coba dibuat oleh klien sudah ada (misalnya, menyisipkan baris dengan kunci utama yang ada). | Jangan mencoba lagi tanpa memperbaiki masalah. |
CANCELLED |
Operasi dibatalkan, biasanya oleh pemanggil. | Coba lagi operasi tersebut. |
DEADLINE_EXCEEDED |
Batas waktu berakhir sebelum operasi selesai. | Selidiki apakah tenggat waktu sudah cukup. Gunakan batas waktu yang sesuai dengan waktu aktual saat respons berguna. Perhatikan bahwa untuk operasi yang mengubah status sistem, error mungkin ditampilkan meskipun operasi telah berhasil diselesaikan. Untuk mendapatkan tips, lihat Memecahkan masalah error batas waktu terlampaui. |
FAILED_PRECONDITION |
Operasi ditolak karena prasyarat untuk permintaan tidak terpenuhi. Kolom pesan dalam respons error memberikan informasi tentang prasyarat yang gagal. Salah satu kemungkinan penyebabnya adalah menjalankan kueri yang memerlukan indeks yang belum ditentukan. | Jangan mencoba lagi tanpa memperbaiki masalah. |
INTERNAL |
Server menampilkan error. Beberapa invarian yang diharapkan oleh sistem pokok telah rusak. | Jangan mencoba lagi kecuali Anda memahami keadaan dan penyebab error secara spesifik. |
INVALID_ARGUMENT |
Klien menentukan nilai yang tidak valid. Kolom pesan dalam respons error memberikan informasi tentang nilai mana yang tidak valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |
NOT_FOUND |
Menunjukkan bahwa beberapa entity yang diminta, seperti memperbarui entity atau melakukan kueri tabel atau kolom, tidak ada. | Jangan mencoba lagi tanpa memperbaiki masalah. |
OUT_OF_RANGE |
Upaya operasi dilakukan melampaui rentang yang valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |
PERMISSION_DENIED |
Pengguna tidak diizinkan membuat permintaan. | Jangan mencoba lagi tanpa memperbaiki masalah. |
RESOURCE_EXHAUSTED |
Beberapa resource telah habis. Mungkin project melebihi kuota atau seluruh sistem file kehabisan ruang. | Pastikan Anda tidak melebihi kuota project atau Spanner. Jika Anda melebihi kuota, jangan mencoba lagi tanpa memperbaiki masalah. Jika tidak, coba lagi dengan backoff eksponensial. |
UNAUTHENTICATED |
Permintaan tidak memiliki kredensial autentikasi operasi yang valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |
UNAVAILABLE |
Saat ini server tidak tersedia | Coba lagi menggunakan backoff eksponensial. Perlu diketahui bahwa mencoba kembali operasi non-idempoten tidak selalu aman. |
UNIMPLEMENTED |
Operasi tidak diterapkan atau tidak didukung/diaktifkan dalam layanan ini. | Jangan mencoba lagi tanpa memperbaiki masalah. |
UNKNOWN |
Server menampilkan error yang tidak diketahui. Error yang dilaporkan oleh API yang tidak menampilkan informasi error yang memadai dapat dikonversi menjadi error ini. | Periksa keamanan permintaan Anda. Kemudian, coba lagi dengan backoff eksponensial. |