Kunci awal yang diberikan tidak valid
TL;DR — ExclusiveStartKey Anda tidak cocok dengan skema kunci dari apa yang Anda buat paginasinya. Itu harus berisi atribut kunci DynamoDB yang dikembalikan di LastEvaluatedKey — kunci utama lengkap, ditambah kunci indeks saat Anda menanyakan GSI/LSI — dengan nama dan tipe yang sama. Berikan LastEvaluatedKey kembali kata demi kata; dirakit dengan tangan, itulah yang menyebabkan kerusakan ini.
Apa artinya
ValidationException: The provided starting key is invalidValidationException: Exclusive Start Key must have same size as table's key schemaExclusiveStartKey memberi tahu Query/Scan di mana harus melanjutkan. DynamoDB memvalidasinya terhadap skema kunci tabel — atau, untuk kueri indeks, gabungan kunci indeks-plus-tabel yang dibawa LastEvaluatedKey. Atribut yang hilang, atribut tambahan, nama salah, atau tipe salah semuanya gagal sebelum data apa pun dibaca.
Mengapa itu terjadi
- Membuat kunci secara manual hanya dengan kunci partisi — tabel kunci komposit memerlukan kunci dan pengurutan partisi di kunci awal.
- Membuat halaman indeks hanya dengan kunci tabel —
LastEvaluatedKeypada kueri GSI/LSI berisi atribut kunci indeks dan kunci utama tabel; semuanya harus kembali. - Ketik atau beri nama drift — kunci diserialkan (JSON, param URL, cache) dan dikembalikan dengan
"42"di manaLastEvaluatedKeymemiliki nomor, atau dengan bidang yang diganti namanya. - Menggunakan kembali kunci di seluruh kueri —
LastEvaluatedKeydari satu tabel/index diteruskan ke kueri terhadap kueri lainnya, atau ke kueri yang sama setelah asumsi skema kunci diubah. - Pembungkus yang memasukkan default — ODM yang mengisi atribut yang dianggapnya termasuk dalam kunci dapat memasukkan kunci awal melewati ukuran skema.
Bagaimana cara memperbaikinya
LastEvaluatedKeypulang pergi tidak tersentuh:let ExclusiveStartKey; do { const page = await docClient.send( new QueryCommand({ TableName, KeyConditionExpression, ExpressionAttributeValues, ExclusiveStartKey }) ); items.push(...(page.Items ?? [])); ExclusiveStartKey = page.LastEvaluatedKey; // verbatim — no rebuild } while (ExclusiveStartKey);Buat serialisasi secara lossless jika melintasi batas permintaan — saat kursor penomoran halaman berpindah ke browser dan kembali lagi, enkode seluruh objek
LastEvaluatedKey(misalnya base64 dari JSON-nya) alih-alih merekonstruksinya dari kolom item, dan pertahankan nomor jenis nomor.Sertakan setiap atribut kunci untuk penomoran halaman indeks — partisi indekskunci /sort dan kunci partisi tabel/sort, persis seperti yang dikembalikan.
Jangan membuat titik awal — penomoran halaman DynamoDB tidak memiliki offset; jika Anda memerlukan "mulai di dekat X", ungkapkan dalam
KeyConditionExpression(sk > :x) daripadaExclusiveStartKeybuatan tangan.Log
LastEvaluatedKeymentah jika terjadi kegagalan. Bandingkan byte demi byte dengan permintaan Anda berikutnya yang dikirim — lapisan serialisasi sering kali mengganti nama atau merangkai tipe angka.
Query di DynoTable
Telusuri Query di DynoTable dan periksa kursor LastEvaluatedKey mentah antar halaman — buka tabel dengan ⌘K, jalankan Query, dan salin token pagination kata demi kata ke dalam loop SDK Anda. Panel kueri menunjukkan dengan tepat atribut utama mana yang diharapkan DynamoDB.
Gunakan Pembangun Kueri untuk menghasilkan program Kueri yang diberi nomor halaman dengan penanganan ExclusiveStartKey yang benar. Ganti profil dengan ⌘P; Uji Koneksi pada Pengaturan → Profil. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- Hasil kueri tabel penomoran halaman dalam DynamoDB (diverifikasi 13-07-2026)
- Kueri — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
Kesalahan terkait
- Elemen kunci yang diberikan tidak cocok dengan skema — skema yang sama tidak cocok pada kunci
GetItem/write. - Kondisi kunci kueri tidak didukung
- Contoh kode: Dapatkan semua item di Node.js · dengan Python (boto3) — loop penomoran halaman LastEvaluatedKey dilakukan dengan benar.
- Pelajari: Paginasi dalam DynamoDB
Referensi
- Hasil kueri tabel penomoran halaman dalam DynamoDB — Panduan Pengembang Amazon DynamoDB
- Kueri — Referensi Amazon DynamoDB API
- Pindai — Referensi Amazon DynamoDB API
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.