ValidationException: 소스에서 예상치 못한 결과가 발생했습니다.

TL;DR — PartiQL FROM 절의 테이블 이름에는 파서가 허용하지 않는 문자(대개 대시)가 포함되어 있습니다. 이름을 큰따옴표(SELECT * FROM "my-table")로 묶습니다. 작은따옴표는 작동하지 않습니다. PartiQL에서는 식별자가 아닌 문자열 리터럴을 의미합니다.

무엇을 의미하는가

ValidationException: Unexpected from source

PartiQL 파서는 FROM my-table를 식별자 my로 읽은 다음 예상치 못한 토큰을 읽습니다. 대시는 기본 식별자 내에서 유효하지 않습니다. DynamoDB 테이블 이름에는 법적으로 -, ._가 포함될 수 있으므로 완벽하게 유효한 테이블 이름이라도 인용될 때까지 PartiQL에서 구문 분석할 수 없습니다. PartiQL 키워드와 충돌하는 이름에도 동일하게 적용됩니다.

왜 발생하는가

  • 테이블 이름에 대시 또는 점이 포함되어 있습니다users-prod, app.events. 단순 식별자로는 이를 전달할 수 없습니다.
  • 프레임워크 생성 테이블 이름 — 테이블 이름에 환경 또는 단계 접미사를 추가하는 도구(예: Todo-dev)는 대시를 선택하지 않고도 대시를 입력하는 고전적인 방법입니다.
  • 따옴표 없이 색인 쿼리"table"."index" 형식에서는 두 부분 모두에 큰따옴표가 필요합니다.
  • 큰따옴표 대신 작은따옴표FROM 'my-table'도 실패합니다. 작은따옴표는 이름이 아니라 PartiQL의 문자열 리터럴을 나타냅니다.

어떻게 해결하는가

  1. 테이블 이름을 큰따옴표로 묶으세요.

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. 인덱스를 쿼리할 때 두 부분을 큰따옴표로 묶으세요.

    SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'
  3. 문자열 값에만 작은따옴표를 유지하세요 — 이름은 큰따옴표로, 값은 작은따옴표로 묶습니다. 그것들을 섞으면 정확히 이런 종류의 구문 분석 오류가 발생합니다.

  4. 생성된 문에서 방어적으로 인용 — 코드가 테이블 이름을 PartiQL에 삽입하는 경우 항상 큰따옴표로 묶어 내보냅니다. 이름에 꼭 필요하지 않은 경우에도 유효합니다.

  5. 가능한 경우 기본 쿼리를 선호합니다. Query/Scan 요청은 간단한 읽기를 위해 PartiQL 식별자 규칙을 완전히 우회합니다.

DynoTable에서 실행

DynoTable의 PartiQL 편집기는 테이블과 인덱스 이름을 자동으로 큰따옴표로 묶습니다. 명령문을 SDK 코드에 붙여넣기 전에 인라인 진단으로 SELECT * FROM "my-table"를 실행하세요. 사이드바에서 정확한 테이블 이름(대시 포함)을 확인하려면 ⌘K로 테이블을 엽니다.

PartiQL 구문 분석이 계속 실패하면 동등한 기본 요청에 대해 Query Builder로 전환하세요. 프로필 전환(⌘P) 및 설정의 연결 테스트 → 프로필은 문이 오른쪽 표를 가리키도록 유지합니다. Connect to AWSInstall를 참조하세요.

출처

재현하기

FROM 소스가 테이블 이름이 아닌 PartiQL 문입니다. 파서는 테이블을 찾기 전에 이를 거부하므로 이는 모든 엔드포인트에서 재현됩니다.

await client.send(new ExecuteStatementCommand({Statement: 'SELECT * FROM 123'}));

실제 출력:

ValidationException: Unexpected from source
HTTP 400

따옴표가 없지만 유효한 이름과 대조해 보세요. SELECT * FROM repro는 잘 구문 분석하고 나중에 그러한 테이블이 없으면 ResourceNotFoundException로 실패합니다. Unexpected from source는 엄밀히 말하면 분석 실패이므로 누락된 테이블이 아닌 구문 신호로 읽으십시오.

관련 오류

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.

JavaScript용 AWS SDK v3.1095.0을 사용하여 DynamoDB Local 2.x에 대해 2026년 7월 26일 재현 — 위 출력은 그대로입니다.

Console 없이 DynamoDB 작업하기

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

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