업데이트 표현식의 피연산자에 잘못된 데이터 유형이 있습니다.
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(유형N) 대신"5"(유형S)로 수입되었습니다.- 목록(
L) 피연산자가 있는ADD tags :t—ADD는 목록이 아닌 _sets_로 수집됩니다. 목록에는SET+list_append가 추가됩니다. list_append(mylist, :v)여기서mylist는 맵, 집합 또는 스칼라입니다 — 두 인수는 모두 목록이어야 합니다(단일 요소를 단일 항목 목록으로 래핑).- 설정 요소 유형 불일치 — 저장된 숫자 집합(
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).드리프트된 항목 수정 — 속성이 잘못된 유형을 전달하는 항목을 찾아 한 번 다시 작성합니다. "일부 항목에서 동일한 업데이트가 실패합니다" 증상은 항상 코드가 아니라 데이터입니다.
업데이트하기 전에 항목을 읽으십시오. 빠른
GetItem는 해당 특정 행에서counter이N인지S인지를 보여줍니다.
DynoTable에서 열기
DynoTable의 항목 편집기는 해당 값 옆에 각 속성의 저장된 유형(S, N, L, SS, …)을 표시합니다. 숫자 카운터를 나타내는 문자열 "5"는 ADD를 실행하기 전에 분명합니다. ⌘K가 있는 항목을 열고 유형을 검사한 다음 스테이징(⌘S)을 사용하여 업데이트를 테스트합니다.
명시적 유형 태그를 사용하여 Expression Builder에서 수정된 표현식을 작성합니다. ⌘P로 프로필을 전환합니다. Connect to AWS 및 Install을 참조하세요.
출처
- 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
- 유형 불일치: 키 요소가 스키마와 일치하지 않음
- 학습: 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
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.