Two document paths overlap with each other
요약 — 하나의 UpdateExpression은 각 문서 경로를 한 번만 건드릴 수 있고, 어떤 경로도 같은 표현식이 건드리는 다른 경로 안에 있을 수 없습니다. SET profile = :p, profile.email = :e는 겹칩니다(profile.email이 profile 안에 있음). 같은 속성을 두 번 지정하는 것도 마찬가지입니다. 자식을 부모 값에 접거나 두 업데이트로 나누세요.
무엇을 의미하나요
ValidationException: Invalid UpdateExpression: Two document paths overlap
with each other; must remove or rewrite one of these paths;
path one: [profile], path two: [profile, email]DynamoDB는 UpdateExpression의 모든 작업을 항목의 속성 값 업데이트 이전 그대로 에 대해 평가합니다 — 작업은 왼쪽에서 오른쪽으로 차례로 적용되지 않습니다. 두 작업이 겹치는 경로(같은 속성, 또는 부모와 그 안에 중첩된 것)를 대상으로 하면 결과가 모호해집니다: profile.email = :e는 profile = :p가 전체 map을 교체하기 전에 실행되나요 후에 실행되나요? 추측하는 대신 DynamoDB는 표현식을 즉시 거부합니다. (같은 겹침 검사가 ProjectionExpression의 중복 경로에도 적용됩니다.)
왜 발생하나요
- 한 표현식에서 부모와 그 자식 설정 —
SET profile = :p, profile.email = :e. 두 번째 경로가 첫 번째 안에 있습니다. - 같은 속성이 두 번 나타남 —
SET updatedAt = :a REMOVE updatedAt, 또는SET tags = :t ADD tags :more. - ODM/래퍼가 설정하는 경로를 조용히 추가 — 고전적 사례: 코드가
item.field도 설정하는 동안 라이브러리가 타임스탬프나 전체 객체(SET item = :obj)를 자동으로 씀(자동createdAt/updatedAt이 있는 Dynamoose에서 목격). - list와 그 요소 중 하나를 함께 업데이트 —
SET mylist = :l, mylist[0] = :v.
어떻게 고치나요
자식을 부모 값에 접으세요 — 어차피 map을 교체한다면 새 이메일을 그 안에 넣고 두 번째 작업을 빼세요:
// instead of SET profile = :p, profile.email = :e UpdateExpression: 'SET #p = :p', ExpressionAttributeValues: {':p': {name: 'Ada', email: 'ada@example.com'}}또는 잎만 업데이트하세요 — 부모를 건드리지 않고 중첩 필드를 개별적으로 설정(
SET #p.#n = :n, #p.#e = :e). 같은 부모 아래의 형제 경로는 겹치지 않습니다. 중첩만 겹칩니다.중복을 제거하세요 — 각 속성이
SET/REMOVE/ADD/DELETE전반에서 정확히 하나의 작업에 나타나도록 하세요.라이브러리의 자동 필드를 확인하세요 — 자체 표현식이 이미 쓰는 업데이트에서 자동 관리 속성(타임스탬프, 버전)을 비활성화하거나 제외하세요.
진짜로 "부모 교체 후 자식 조정" 시맨틱이 필요할 때 두 요청으로 나누세요 — 순서대로 두 번의
UpdateItem호출.
중첩 map을 수동으로 편집하는 것이 겹침이 몰래 들어오는 곳입니다 — DynoTable 데스크톱 앱은 항목의 속성을 제자리에서 편집하고 변경된 것에 대해서만 깔끔하고 겹치지 않는 업데이트를 발행합니다.
관련 오류
- The document path provided is invalid for update — 다른 중첩 경로 업데이트 실패(이중 쓰기가 아니라 부모 누락).
- Invalid UpdateExpression: Syntax error
- 학습: Update expressions
References
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Referring to item attributes when using expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
공식 AWS 문서(위 링크)를 기준으로 2026-07-13에 마지막으로 검증되었습니다.