ValidationException: 소스에서 예상치 못한 결과가 발생했습니다.
TL;DR — PartiQL FROM 절의 테이블 이름에는 파서가 허용하지 않는 문자(대개 대시)가 포함되어 있습니다. 이름을 큰따옴표(SELECT * FROM "my-table")로 묶습니다. 작은따옴표는 작동하지 않습니다. PartiQL에서는 식별자가 아닌 문자열 리터럴을 의미합니다.
무엇을 의미하는가
ValidationException: Unexpected from sourcePartiQL 파서는 FROM my-table를 식별자 my로 읽은 다음 예상치 못한 토큰을 읽습니다. 대시는 기본 식별자 내에서 유효하지 않습니다. DynamoDB 테이블 이름에는 법적으로 -, . 및 _가 포함될 수 있으므로 완벽하게 유효한 테이블 이름이라도 인용될 때까지 PartiQL에서 구문 분석할 수 없습니다. PartiQL 키워드와 충돌하는 이름에도 동일하게 적용됩니다.
왜 발생하는가
- 테이블 이름에 대시 또는 점이 포함되어 있습니다 —
users-prod,app.events. 단순 식별자로는 이를 전달할 수 없습니다. - 프레임워크 생성 테이블 이름 — 테이블 이름에 환경 또는 단계 접미사를 추가하는 도구(예:
Todo-dev)는 대시를 선택하지 않고도 대시를 입력하는 고전적인 방법입니다. - 따옴표 없이 색인 쿼리 —
"table"."index"형식에서는 두 부분 모두에 큰따옴표가 필요합니다. - 큰따옴표 대신 작은따옴표 —
FROM 'my-table'도 실패합니다. 작은따옴표는 이름이 아니라 PartiQL의 문자열 리터럴을 나타냅니다.
어떻게 해결하는가
테이블 이름을 큰따옴표로 묶으세요.
SELECT * FROM "users-prod" WHERE pk = 'USER#42'인덱스를 쿼리할 때 두 부분을 큰따옴표로 묶으세요.
SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'문자열 값에만 작은따옴표를 유지하세요 — 이름은 큰따옴표로, 값은 작은따옴표로 묶습니다. 그것들을 섞으면 정확히 이런 종류의 구문 분석 오류가 발생합니다.
생성된 문에서 방어적으로 인용 — 코드가 테이블 이름을 PartiQL에 삽입하는 경우 항상 큰따옴표로 묶어 내보냅니다. 이름에 꼭 필요하지 않은 경우에도 유효합니다.
가능한 경우 기본 쿼리를 선호합니다.
Query/Scan요청은 간단한 읽기를 위해 PartiQL 식별자 규칙을 완전히 우회합니다.
DynoTable에서 실행
DynoTable의 PartiQL 편집기는 테이블과 인덱스 이름을 자동으로 큰따옴표로 묶습니다. 명령문을 SDK 코드에 붙여넣기 전에 인라인 진단으로 SELECT * FROM "my-table"를 실행하세요. 사이드바에서 정확한 테이블 이름(대시 포함)을 확인하려면 ⌘K로 테이블을 엽니다.
PartiQL 구문 분석이 계속 실패하면 동등한 기본 요청에 대해 Query Builder로 전환하세요. 프로필 전환(⌘P) 및 설정의 연결 테스트 → 프로필은 문이 오른쪽 표를 가리키도록 유지합니다. Connect to AWS 및 Install를 참조하세요.
출처
- PartiQL select statements for DynamoDB (2026-07-13 인증)
- Supported data types and naming rules (2026-07-13 인증)
재현하기
FROM 소스가 테이블 이름이 아닌 PartiQL 문입니다. 파서는 테이블을 찾기 전에 이를 거부하므로 이는 모든 엔드포인트에서 재현됩니다.
await client.send(new ExecuteStatementCommand({Statement: 'SELECT * FROM 123'}));실제 출력:
ValidationException: Unexpected from source
HTTP 400따옴표가 없지만 유효한 이름과 대조해 보세요. SELECT * FROM repro는 잘 구문 분석하고 나중에 그러한 테이블이 없으면 ResourceNotFoundException로 실패합니다. Unexpected from source는 엄밀히 말하면 분석 실패이므로 누락된 테이블이 아닌 구문 신호로 읽으십시오.
관련 오류
- DuplicateItemException — 기존 키의 PartiQL
INSERT. - ValidationException — 상위 예외 클래스.
- 학습: PartiQL examples · SQL for DynamoDB
참고 자료
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- 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일에 마지막으로 확인되었습니다.
JavaScript용 AWS SDK v3.1095.0을 사용하여 DynamoDB Local 2.x에 대해 2026년 7월 26일 재현 — 위 출력은 그대로입니다.