Value provided in ExpressionAttributeValues unused in expressions

TL;DR — Anda menyediakan placeholder nilai di ExpressionAttributeValues (mis. :status) yang tidak dirujuk expression apa pun. DynamoDB mensyaratkan setiap :value yang dideklarasikan digunakan dalam KeyConditionExpression, FilterExpression, UpdateExpression, atau ConditionExpression. Hapus nilai yatim — atau perbaiki expression yang seharusnya menggunakannya.

Apa artinya

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 adalah map substitusi untuk nilai literal yang dibandingkan expression Anda (:status, :min, …). DynamoDB memberlakukan kontrak dua arah: setiap :placeholder yang digunakan dalam expression harus dideklarasikan, dan setiap placeholder yang dideklarasikan harus digunakan. Nilai tersisa yang tidak dirujuk expression apa pun memicu HTTP 400 ValidationException ini — sisi klien dan tidak dapat dicoba ulang sampai map cocok.

Mengapa itu terjadi

  • Nilai usang setelah mengedit expression — Anda menghapus #s = :status dari expression tetapi meninggalkan :status di map nilai.
  • Drift salin-tempel — menggunakan ulang map nilai dari permintaan sebelumnya yang punya lebih banyak kondisi daripada yang sekarang.
  • Permintaan yang dihasilkan yang terlalu banyak mendeklarasikan — builder menambahkan :v untuk klausa filter yang kemudian dihapus.
  • Kekeliruan nama-vs-nilai — Anda memaksudkan #status (alias nama) tetapi mendeklarasikan :status (nilai).
  • Salah ketik — expression menggunakan :stat sementara map mendeklarasikan :status.

Bagaimana cara memperbaikinya

  1. Hapus nilai yang tidak digunakan yang disebut pesan dari ExpressionAttributeValues.
  2. Jaga nilai selaras dengan expression — deklarasikan :placeholder hanya ketika expression merujuknya.
  3. Konfirmasi nama vs nilai — placeholder : masuk ke ExpressionAttributeValues; alias # masuk ke ExpressionAttributeNames.
  4. Bangun expression dan map-nya bersama agar tidak ada nilai yang menggantung.

Query di DynoTable

DynoTable menghasilkan ExpressionAttributeValues dari baris filter yang Anda konfigurasikan — setiap :placeholder dalam keluarannya dirujuk di dalam string ekspresi. Buka sebuah tabel dengan ⌘K, tambahkan filter di panel kueri, lalu salin map yang dipancarkan ke panggilan SDK Anda untuk menghapus nilai yatim.

Saat men-debug permintaan yang gagal, tempel ekspresinya ke Expression Builder dan bandingkan map nilainya dengan milik Anda. Peralihan profil (⌘P) dan Test Connection di Pengaturan → Profil memastikan Anda menguji pada tabel yang sama. Lihat Menghubungkan ke AWS dan Instal.

Sumber

Kesalahan terkait

Referensi

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.