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 は2つの リスト を取ります。DynamoDB は書き込み時にアイテムの現在の属性型に対して式を評価するため、同じリクエストが1つのアイテムで成功し、別の型を保持する別のアイテムで失敗することがあります。近いいとこは、送られた値の 型が演算子に決して合わないとき、より早い式の解析時に拒否されます:
ValidationException: Invalid UpdateExpression: Incorrect operand type for
operator or function; operator: ADD, operand type: LIST発生する理由
ADD counter :oneだがcounterが文字列として格納されている — 例: アイテムが5(型N)ではなく"5"(型S)でインポートされた。- リスト(
L)オペランドでのADD tags :t—ADDはリストではなく セット に集めます。リストはSET+list_appendで追加されます。 mylistがマップ、セット、スカラーの場合のlist_append(mylist, :v)— 両方の引数はリストである必要があります(単一の要素を1要素のリストとしてラップします)。- セット要素型の不一致 — 格納された数値セット(
NS)に対する文字列セット(SS)オペランドでのADD/DELETE、またはその逆。 - アイテム間の型ドリフト — 混在するライター(古いインポート、別のサービス)が、同じ属性を一部のアイテムでは
N、他ではSとして残したため、更新が時々しか失敗しない。
修正方法
カウンター: 値を数値として格納し、数値オペランドを送ります:
UpdateExpression: 'ADD #c :one', ExpressionAttributeValues: {':one': 1} // {N: "1"} — not a stringリスト:
list_appendとともにSETを使い、新しい要素をリストでラップします:UpdateExpression: 'SET #l = list_append(if_not_exists(#l, :empty), :new)', ExpressionAttributeValues: {':new': ['item'], ':empty': []}セット:
ADD/DELETEオペランドを、格納された属性と同じセット型(SSにはSS、NSにはNS)に保ちます。ドリフトしたアイテムを修正します — 属性が誤った型を運ぶアイテムを見つけ、一度書き直します。「同じ更新が一部のアイテムで失敗する」症状は常にコードではなくデータです。
型ドリフトはほとんどのコンソールで見えません。DynoTable デスクトップアプリ は各属性の実際に格納された型を値の横に表示するため、文字列としての "5" カウンターがすぐに目立ちます。
関連するエラー
- Float types are not supported — SDK 側からの数値型の摩擦。
- Number overflow
- Type mismatch: key element does not match schema
- Learn: Update expressions · Atomic counters · Data types
References
- 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 ドキュメントに照らして確認しました。