The provided expression refers to an attribute that does not exist in the item

요약 — UpdateExpression이나 ConditionExpression이 항목에 없는 속성을 읽습니다 — 산술 피연산자(score가 설정된 적 없을 때 SET score = score + :inc), 다른 속성에서의 복사(SET a = b), 또는 list 피연산자가 없는 list_append. if_not_exists로 읽기를 보호하거나 항목 생성 시 속성을 시드하세요. (부모 map이 없는 중첩 경로에 쓰는 것은 별개의 "document path invalid for update" 오류를 발생시킵니다.)

무엇을 의미하는가

ValidationException: The provided expression refers to an attribute
that does not exist in the item

이것은 HTTP 400 ValidationException입니다. 요청은 잘 파싱되었지만, DynamoDB가 항목에 대해 이를 평가할 때 표현식이 읽는 속성 — +/-의 피연산자, SET a = b 복사의 소스, 또는 list_append 인수 — 이 없어 피연산자를 해석할 수 없습니다. 클라이언트 측이며 재시도할 수 없습니다: 같은 항목 + 표현식이 이를 재현합니다.

왜 발생하는가

  • 설정되지 않은 속성에 대한 산술score가 초기화된 적 없을 때 SET score = score + :inc가 던집니다. 문서의 증가/감소 구문은 기존 숫자 속성에 대해 작동합니다.
  • 누락된 속성에서의 복사 — 항목에 email이 없을 때 SET backupEmail = email.
  • 누락된 list에 대한 list_appendtags가 아직 없을 때 SET tags = list_append(tags, :more).
  • 중첩 경로에 대한 잘못된 플레이스홀더 매핑 — 잎만 대체하는 대신 점으로 구분된 전체 경로를 하나의 ExpressionAttributeNames 항목("#p": "stats.viewCount")에 매핑; DynamoDB는 리터럴 "stats.viewCount"를 단일 속성 이름으로 취급하며, 표현식이 읽는 순간 없습니다.
  • 읽기 속성 이름의 오타나 잘못된 대소문자 — DynamoDB 속성 이름은 대소문자를 구분합니다.

어떻게 해결하는가

  1. if_not_exists로 읽기를 보호하세요 — 속성이 아직 없어도 첫 쓰기가 작동하도록:
    SET score = if_not_exists(score, :zero) + :inc
    SET tags = list_append(if_not_exists(tags, :emptyList), :more)
  2. 항목 생성 시 속성을 시드하세요 — 미리 score: 0, tags: []를 써서 나중의 읽기가 항상 해석되도록 하세요.
  3. 중첩 경로에서 잎만 대체하세요 — 표현식에서 점을 리터럴로 유지: 전체 경로를 한 이름에 넣는 대신 {"#c": "viewCount"}와 함께 SET stats.#c = :v.
  4. 경로가 유효하다고 가정하기 전에 GetItem으로 속성이 존재하는지 / 철자 + 대소문자를 확인하세요.
  5. 부모 map이 없는 중첩 자식에 쓰나요? 그것은 형제 오류입니다 — 두 단계 부모 생성 패턴은 the document path provided in the update expression is invalid for update를 참조하세요.

업데이트를 작성하는 동안 항목의 실제 형태를 눈앞에 두고 싶나요? DynoTable 데스크톱 앱은 모든 속성(중첩 map과 list 포함)을 보여주므로 누락된 부모 경로가 한눈에 명백합니다.

관련 오류

참고 자료

공식 AWS 문서(위 링크)를 기준으로 2026-07-13에 마지막으로 검증되었습니다.

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.