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 source

Der 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 Punktusers-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ührungszeichenFROM 'my-table' scheitert ebenfalls: einfache Anführungszeichen bezeichnen in PartiQL ein String-Literal, keinen Namen.

So behebst du es

  1. Setze den Tabellennamen in doppelte Anführungszeichen:

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. Setze beide Teile in doppelte Anführungszeichen, wenn du einen Index abfragst:

    SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'
  3. 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.

  4. 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

References

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

DynoTable ist ein schneller Desktop-Client für DynamoDB — durchsuche Tabellen, führe SQL-artige Queries aus und bearbeite Items lokal.