The provided starting key is invalid
TL;DR — ExclusiveStartKey'iniz, sayfaladığınız şeyin anahtar şemasıyla eşleşmiyor. DynamoDB'nin LastEvaluatedKey'de döndürdüğü tam anahtar özniteliklerini — tam birincil anahtarı, artı bir GSI/LSI sorguladığınızda indeks anahtarını — aynı adlar ve türlerle içermelidir. LastEvaluatedKey'i birebir geri iletin; onu elle birleştirmek bunun bozulma şeklidir.
Ne anlama gelir
ValidationException: The provided starting key is invalidValidationException: Exclusive Start Key must have same size as table's key schemaExclusiveStartKey, bir Query/Scan'e nereden devam edeceğini söyler. DynamoDB onu tablonun anahtar şemasına — ya da bir indeks sorgusu için, LastEvaluatedKey'in taşıdığı birleşik indeks-artı-tablo anahtarına — karşı doğrular. Eksik öznitelikler, fazladan öznitelikler, yanlış adlar ya da yanlış türler, herhangi bir veri okunmadan önce başarısız olur.
Neden olur
- Anahtarı yalnızca bölüm anahtarıyla elle oluşturmak — bileşik anahtarlı bir tablo, başlangıç anahtarında bölüm ve sıralama anahtarına ihtiyaç duyar.
- Bir indeksi yalnızca tablo anahtarıyla sayfalamak — bir GSI/LSI sorgusundaki
LastEvaluatedKey, hem indeks anahtar özniteliklerini hem de tablonun birincil anahtarını içerir; hepsi geri gelmelidir. - Tür veya ad kayması — anahtar serileştirildi (JSON, URL parametresi, önbellek) ve
LastEvaluatedKey'in bir sayısı olduğu yerde"42"ile ya da yeniden adlandırılmış bir alanla geri geldi. - Bir anahtarı sorgular arasında yeniden kullanmak — bir tablodan/indeksten gelen bir
LastEvaluatedKey'i başka birine karşı bir sorguya ya da anahtar şeması varsayımı değiştikten sonra aynı sorguya iletmek. - Varsayılan enjekte eden bir sarmalayıcı — anahtara ait olduğunu düşündüğü öznitelikleri dolduran bir ODM, başlangıç anahtarını şema boyutunun ötesinde doldurabilir.
Nasıl düzeltilir
LastEvaluatedKey'i dokunmadan gidip-getirin: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);Bir istek sınırını geçiyorsa onu kayıpsız serileştirin — sayfalama imleci bir tarayıcıya gidip döndüğünde, onu öğe alanlarından yeniden oluşturmak yerine tüm
LastEvaluatedKeynesnesini kodlayın (örneğin JSON'unun base64'ü) ve sayı türlerini sayı tutun.İndeks sayfalaması için her anahtar özniteliğini dahil edin — indeks bölüm/sıralama anahtarı ve tablo bölüm/sıralama anahtarı, tam olarak döndürüldüğü gibi.
Bir başlangıç noktası uydurmayın — DynamoDB sayfalamasının ofseti yoktur; "X'e yakın başla" gerekiyorsa, onu elle yapılmış bir
ExclusiveStartKeyyerineKeyConditionExpression'da (sk > :x) ifade edin.
LastEvaluatedKey'in tablonuz ya da indeksiniz için gerçekte ne içerdiğini incelemek tahmin işini ortadan kaldırır — DynoTable masaüstü uygulaması sorgular arasında sayfalar ve çıplak imleci gösterir ve DynamoDB Expression Builder sorgu isteğini onun etrafında oluşturur.
DynoTable’da sorgula
DynoTable'da bir Sorguyu baştan sona tarayın ve sayfalar arasındaki ham LastEvaluatedKey imlecini inceleyin — ⌘K ile tabloyu açın, bir Sorgu çalıştırın ve sayfalandırma belirtecini aynen SDK döngünüze kopyalayın. Sorgu paneli DynamoDB'un tam olarak hangi temel özellikleri beklediğini gösterir.
Doğru ExclusiveStartKey işlemeyle sayfalandırılmış bir Sorgu programı oluşturmak için Query Builder'yi kullanın. Profilleri ⌘P ile değiştirin; Ayarlar → Profiller'de Bağlantıyı Test Et. Bkz. Connect to AWS ve Install.
Kaynaklar
- Paginating table query results in DynamoDB (2026-07-13 tarihinde doğrulandı)
- Query — Amazon DynamoDB API Reference (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- The provided key element does not match the schema — bir
GetItem/yazma anahtarındaki aynı şema uyuşmazlığı. - Query key condition not supported
- Kod örneği: Get all items in Node.js · Python (boto3) ile — doğru yapılmış LastEvaluatedKey sayfalama döngüsü.
- Öğrenin: Pagination in DynamoDB
Kaynaklar
- Paginating table query results in DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- Scan — Amazon DynamoDB API Reference
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.