Value provided in ExpressionAttributeValues unused in expressions
TL;DR — 你在 ExpressionAttributeValues 中提供了一個沒有任何運算式引用的值預留位置(例如 :status)。DynamoDB 要求每個宣告的 :value 都在某個 KeyConditionExpression、FilterExpression、UpdateExpression 或 ConditionExpression 中被使用。移除這個孤立的值——或者修復本應使用它的那個運算式。
這是什麼意思
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 是你的運算式所比較的字面值(:status、:min……)的替換 map。DynamoDB 強制執行一個雙向契約:你在運算式中使用的每個 :placeholder 都必須被宣告,並且每個宣告的預留位置都必須被使用。一個沒有任何運算式引用的殘留值會觸發這個 HTTP 400 ValidationException——屬於用戶端錯誤,在 map 匹配之前不可重試。
為什麼會發生
- 編輯運算式後殘留的陳舊值——你從運算式中去掉了
#s = :status,卻把:status留在了值 map 裡。 - 複製貼上的偏移——重用了一個先前請求的值 map,而那個請求的條件比當前的多。
- 一個過度宣告的生成請求——一個構建器為一個後來被移除的過濾子句新增了
:v。 - 名稱與值的混淆——你本想要
#status(一個名稱別名),卻宣告瞭:status(一個值)。 - 一個拼寫錯誤——運算式用了
:stat,而 map 宣告的是:status。
如何修正
- 從
ExpressionAttributeValues中刪除訊息指明的未使用值。 - 讓值與運算式步調一致——只有當某個運算式引用它時才宣告一個
:placeholder。 - 確認名稱與值——
:預留位置進ExpressionAttributeValues;#別名進ExpressionAttributeNames。 - 把運算式和它的 map 一起構建,這樣就沒有值會懸空。
在 DynoTable 中查詢
DynoTable 根據你配置的過濾器行生成 ExpressionAttributeValues — 輸出中的每個 :placeholder 都會在運算式字串中引用。使用 ⌘K 開啟表格,在查詢面板中新增過濾器,然後將發出的對映覆制到 SDK 呼叫中以消除孤立值。除錯失敗的請求時,將運算式貼上到 Expression Builder 並將其值對映與你的值對映進行比較。Settings → Profiles上的 Profile 切換 (⌘P) 和 Test Connection 確認你正在針對同一個表進行測試。參見連線 AWS和安裝。
來源
- Using expression attribute values in DynamoDB(2026-07-13 驗證)
- DynamoDB condition expression examples(2026-07-13 驗證)
相關錯誤
- Value provided in ExpressionAttributeNames unused in expressions——
#name別名的同一規則。 - ExpressionAttributeValues contains invalid value——map 中一個格式錯誤或為空的值,以及反向不匹配:一個
:placeholder被引用卻從未被提供。 - The provided expression refers to an attribute that does not exist in the item——運算式讀取了一個不在那裡的項目屬性。
- 學習:Expression names & values
參考資料
- Using expression attribute values in DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB condition expression examples — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。