An operand in the update expression has an incorrect data type
TL;DR — 更新的操作會針對實際儲存的內容(以及你傳送的值)做型別檢查,而其中之一不匹配:對一個不是數字或集合的屬性做 ADD、對一個不是列表的東西做 list_append,或者一個元素型別與儲存集合不匹配的集合運算元。讓運算元與儲存的型別匹配——或者修復那個型別漂移了的項目。
這是什麼意思
ValidationException: An operand in the update expression has an incorrect data type更新操作有嚴格的型別規則:ADD 只對數字和集合(SS/NS/BS)有效,DELETE 只對集合有效,而 list_append 接受兩個列表。DynamoDB 在寫入時針對項目當前的屬性型別對運算式求值——因此同一個請求在一個項目上可能成功,而在另一個其屬性持有不同型別的項目上失敗。一個近親會更早地在運算式解析時被拒絕,當_傳送值的_型別永遠無法適配運算子時:
ValidationException: Invalid UpdateExpression: Incorrect operand type for
operator or function; operator: ADD, operand type: LIST為什麼會發生
ADD counter :one,但counter儲存為字串——例如項目匯入時用了"5"(型別S)而不是5(型別N)。ADD tags :t配一個列表(L)運算元——ADD收集進_集合_,而非列表。列表用SET+list_append追加。list_append(mylist, :v),而mylist是一個 map、集合或標量——兩個引數都必須是列表(把單個元素包成一個單元素列表)。- 集合元素型別不匹配——
ADD/DELETE用一個字串集合(SS)運算元針對一個儲存的數字集合(NS),或反之。 - 跨項目的型別漂移——混合的寫入者(一次舊的匯入、另一個服務)在某些項目上把同一個屬性留作
N、在另一些上留作S,因此更新只是有時失敗。
如何修正
計數器: 把值儲存為數字併傳送一個數字運算元:
UpdateExpression: 'ADD #c :one', ExpressionAttributeValues: {':one': 1} // {N: "1"} — not a string列表: 用
SET配list_append,並把新元素包進一個列表:UpdateExpression: 'SET #l = list_append(if_not_exists(#l, :empty), :new)', ExpressionAttributeValues: {':new': ['item'], ':empty': []}集合: 讓
ADD/DELETE運算元保持與儲存屬性相同的集合型別(SS配SS,NS配NS)。修復漂移的項目——找到屬性攜帶錯誤型別的那些項目並一次性重寫它們;"同一個更新在某些項目上失敗"這一症狀總是資料問題,而非程式碼問題。
型別漂移在大多數主控台中是不可見的——DynoTable 的項目編輯器在每個屬性的值旁邊顯示它實際儲存的型別,因此一個作為字串的 "5" 計數器會立即顯現。
在 DynoTable 中開啟
DynoTable 的項目編輯器在其值旁邊顯示每個屬性的儲存型別(S、N、L、SS、…) — 在執行 ADD 之前,代表數字計數器的字串 "5" 是顯而易見的。使用 ⌘K 開啟項目並檢查型別,然後使用暫存 (⌘S) 來測試更新。使用顯式型別標籤在 Expression Builder 中構建正確的運算式。使用 ⌘P 切換設定檔案;參見連線 AWS和安裝。
來源
- Using update expressions in DynamoDB(2026-07-13 驗證)
- Supported data types and naming rules(2026-07-13 驗證)
相關錯誤
- Float types are not supported——來自 SDK 側的數字型別摩擦。
- Number overflow
- 型別不符:索引鍵元素與 schema 不符
- 學習:Update expressions · Atomic counters · Data types
參考資料
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。