One or more parameter values were invalid
TL;DR — DynamoDB istek şeklini kabul etti ama içindeki belirli bir değeri reddetti: boş bir Küme, bir anahtardaki boş bir string, türü şemayla eşleşmeyen bir değer ya da izin verilmeyen bir yerde bir null. Mesajın geri kalanını okuyun — tam parametreyi adıyla verir — ve o değeri düzeltin.
Ne anlama gelir
ValidationException: One or more parameter values were invalid: <specific reason>Bu, mesaj gövdesi bir kuralı bozan bir değeri belirleyen bir ValidationException'dır (HTTP 400) — AWS mesajı yalnızca "karşılaşılan belirli hataya bağlı olarak değişir" olarak belgeler. Önek geneldir; önemli kısım onu izleyendir — örneğin bir AttributeValue'nun bir anahtar için boş bir string içeremeyeceği, bir kümenin boş olamayacağı ya da bir anahtar değerinin türünün şemayla eşleşmediği. Olduğu gibi yeniden denenebilir değildir; değer değişmelidir.
Neden olur
Mesaj kuyruğunun açıkladığı tipik nedenler (tam ifade duruma göre değişir):
- Bir anahtar özniteliğinde boş bir string ya da ikili değer — anahtar olmayan stringlerin ve ikili değerlerin boş olmasına izin verilir; tablo ve indeks anahtarlarına izin verilmez.
- Boş bir küme — sıfır üyeli bir
SS/NS/BS. Kümeler her yerde boş olmamalıdır; boş listeler ve map'ler sorunsuzdur. - Bir anahtar için bir tür uyuşmazlığı (örneğin
expected: S actual: N) — değerin türü tablonun anahtar şemasıyla eşleşmiyor. - Onu kabul etmeyen bir özniteliğe iletilen bir null değeri ya da bir
undefinedalan içinnullyayan bir marshalcı. - Türü için aralık dışı bir değer (number overflow'a bakın).
Nasıl düzeltilir
- Tam mesajı okuyun. DynamoDB sorunlu parametreyi ve tam kuralı adıyla verir — o dize çözümdür.
- Anahtarlara gerçek değerler verin — bir bölüm/sıralama anahtarında asla boş bir string ya da boş bir ikili değil.
- Boş kümeleri bırakın — bir Küme'nin üyesi olmadığında özniteliği atlayın ya da bunun yerine bir skaler/
NULLsaklayın. - Türleri şemayla eşleştirin — sayısal bir anahtarı bir sayı olarak, bir string anahtarı bir string olarak gönderin; sarmalayıcıları geçmeyin.
- Yazmadan önce öğeden
undefined/null'ı çıkarın (Document Client'ınremoveUndefinedValuesseçeneği yaygın durumu ele alır).
SSS
"One or more parameter values were invalid" ne anlama gelir? İsteğinizdeki belirli bir değer bir DynamoDB kuralını bozar — çoğunlukla bir anahtardaki boş bir string, boş bir Küme, anahtar şemasıyla eşleşmeyen bir tür ya da izin verilmeyen bir null. Tam mesaj, tam parametreyi ve nedeni adıyla verir.
Boş bir string neden yalnızca bazen başarısız olur? DynamoDB, anahtar olmayan öznitelikler için boş stringlere izin verir ama onları anahtar özniteliklerinde reddeder. Bir bölüm ya da sıralama anahtarındaki boş bir string "An AttributeValue may not contain an empty string" fırlatır; aynı değer normal bir öznitelikte kabul edilir.
İlgili hatalar
- Supplied AttributeValue is empty — hiç türlü değeri olmayan bir öğe özniteliği.
- The provided key element does not match the schema — bir anahtar türü/şekli uyuşmazlığı.
- ValidationException (genel bakış)
- Öğrenin: DynamoDB data types
Kaynaklar
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- AttributeValue — Amazon DynamoDB API Reference
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.