Value provided in ExpressionAttributeValues unused in expressions

TL;DR — ExpressionAttributeValues'te hiçbir ifadenin başvurmadığı bir değer yer tutucusu (örneğin :status) sağladınız. DynamoDB, bildirilen her :value'nin bir KeyConditionExpression, FilterExpression, UpdateExpression veya ConditionExpression'da kullanılmasını gerektirir. Yetim değeri kaldırın — ya da onu kullanması gereken ifadeyi düzeltin.

Ne anlama gelir

ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in
expressions: keys: {:status}

# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}

ExpressionAttributeValues, ifadelerinizin karşılaştırdığı literal değerler (:status, :min, …) için ikame map'idir. DynamoDB iki yönlü bir sözleşme uygular: bir ifadede kullanılan her :placeholder bildirilmelidir ve bildirilen her yer tutucu kullanılmalıdır. Hiçbir ifadenin başvurmadığı artakalmış bir değer bu HTTP 400 ValidationException'ı tetikler — istemci tarafında ve map'ler eşleşene kadar yeniden denenebilir değildir.

Neden olur

  • İfadeyi düzenledikten sonra bayat bir değer — ifadeden #s = :status'ı bıraktınız ama :status'ı değerler map'inde bıraktınız.
  • Kopyala-yapıştır kayması — mevcuttan daha fazla koşula sahip önceki bir istekten bir değerler map'ini yeniden kullanmak.
  • Fazla bildirim yapan üretilmiş bir istek — bir oluşturucu, sonradan kaldırılan bir filtre cümlesi için :v ekledi.
  • Bir ad-değer karışıklığı#status (bir ad takma adı) demek istediniz ama :status (bir değer) bildirdiniz.
  • Bir yazım hatası — ifade :stat kullanırken map :status bildiriyor.

Nasıl düzeltilir

  1. Mesajın adını verdiği kullanılmayan değeri ExpressionAttributeValues'ten silin.
  2. Değerleri ifadeyle eşzamanlı tutun — bir :placeholder'ı yalnızca bir ifade ona başvurduğunda bildirin.
  3. Adları değerlere karşı doğrulayın: yer tutucuları ExpressionAttributeValues'e gider; # takma adları ExpressionAttributeNames'e gider.
  4. İfadeyi ve map'lerini birlikte oluşturun, böylece hiçbir değer sarkmasın.

DynoTable’da sorgula

DynoTable yapılandırdığınız filtre satırlarından ExpressionAttributeValues üretir; çıktıdaki her :placeholder ifade dizesinde referans alınır. ⌘K ile bir tablo açın, sorgu paneline filtreler ekleyin ve artık değerleri ortadan kaldırmak için oluşturulan haritaları SDK çağrınıza kopyalayın.

Başarısız bir istekte hata ayıklarken ifadeyi Expression Builder'ye yapıştırın ve değer haritasını kendi değer haritanızla karşılaştırın. Ayarlar → Profiller'deki profil değiştirme (⌘P) ve Bağlantıyı Test Et, aynı tabloya göre test yaptığınızı doğrular. Bkz. Connect to AWS ve Install.

Kaynaklar

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.