ValidationException: Unexpected from source
TL;DR — Der Tabellenname in deiner PartiQL-FROM-Klausel enthält Zeichen, die der Parser nicht bloß akzeptiert — meist einen Bindestrich. Setze den Namen in doppelte Anführungszeichen (SELECT * FROM "my-table"). Einfache Anführungszeichen funktionieren nicht: in PartiQL bedeuten sie ein String-Literal, keinen Bezeichner.
Was es bedeutet
ValidationException: Unexpected from sourceDer PartiQL-Parser liest FROM my-table als den Bezeichner my, gefolgt von unerwarteten Tokens — der Bindestrich ist innerhalb eines bloßen Bezeichners nicht gültig. DynamoDB-Tabellennamen dürfen rechtmäßig -, . und _ enthalten, sodass ein völlig gültiger Tabellenname in PartiQL trotzdem nicht parsebar bleiben kann, bis er in Anführungszeichen steht. Dasselbe gilt für Namen, die mit PartiQL-Schlüsselwörtern kollidieren.
Warum es passiert
- Der Tabellenname enthält einen Bindestrich oder Punkt —
users-prod,app.events. Bloße Bezeichner können sie nicht tragen. - Framework-generierte Tabellennamen — Tooling, das eine Umgebung oder Stage an den Tabellennamen anhängt (z. B.
Todo-dev), ist der klassische Weg, wie ein Bindestrich hineingerät, ohne dass du ihn wählst. - Einen Index ohne Anführungszeichen abfragen — die Form
"table"."index"braucht doppelte Anführungszeichen um beide Teile. - Einfache statt doppelter Anführungszeichen —
FROM 'my-table'scheitert ebenfalls: einfache Anführungszeichen bezeichnen in PartiQL ein String-Literal, keinen Namen.
So behebst du es
Setze den Tabellennamen in doppelte Anführungszeichen:
SELECT * FROM "users-prod" WHERE pk = 'USER#42'Setze beide Teile in doppelte Anführungszeichen, wenn du einen Index abfragst:
SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'Behalte einfache Anführungszeichen nur für String-Werte — Namen in doppelten Anführungszeichen, Werte in einfachen. Sie zu verwechseln erzeugt genau diese Klasse von Parse-Fehlern.
Setze in generierten Statements defensiv Anführungszeichen — wenn dein Code Tabellennamen in PartiQL interpoliert, gib sie immer in doppelten Anführungszeichen aus; das ist auch dann gültig, wenn der Name sie streng genommen nicht bräuchte.
Die DynoTable-Desktop-App bringt eine SQL-Workbench für DynamoDB mit, die das Setzen von Anführungszeichen bei Bezeichnern für dich übernimmt, und der DynamoDB Expression Builder zeigt die äquivalente native Query/Scan-Anfrage, wenn du das PartiQL-Parsing lieber ganz umgehen möchtest.
Verwandte Fehler
- DuplicateItemException — PartiQL-
INSERTauf einen bestehenden Schlüssel. - ValidationException — die übergeordnete Exception-Klasse.
- Learn: PartiQL-Beispiele · SQL für DynamoDB
References
- 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
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.