ValidationException: Unexpected from source

In breve — Il nome della tabella nella tua clausola PartiQL FROM contiene caratteri che il parser non accetta nudi — di solito un trattino. Racchiudi il nome tra virgolette doppie (SELECT * FROM "my-table"). Le virgolette singole non funzionano: in PartiQL significano una stringa letterale, non un identificatore.

Cosa significa

ValidationException: Unexpected from source

Il parser PartiQL legge FROM my-table come l'identificatore my seguito da token inaspettati — il trattino non è valido dentro un identificatore nudo. I nomi delle tabelle DynamoDB possono legalmente contenere -, . e _, quindi un nome di tabella perfettamente valido può comunque essere non analizzabile in PartiQL finché non è tra virgolette. Lo stesso vale per i nomi che collidono con le parole chiave PartiQL.

Perché accade

  • Il nome della tabella contiene un trattino o un puntousers-prod, app.events. Gli identificatori nudi non possono portarli.
  • Nomi di tabella generati da framework — il tooling che aggiunge un ambiente o uno stage al nome della tabella (es. Todo-dev) è il modo classico in cui un trattino entra senza che tu lo scelga.
  • Interrogare un indice senza virgolette — la forma "table"."index" necessita di virgolette doppie attorno a entrambe le parti.
  • Virgolette singole invece di doppie — anche FROM 'my-table' fallisce: le virgolette singole denotano una stringa letterale in PartiQL, non un nome.

Come correggerlo

  1. Metti il nome della tabella tra virgolette doppie:

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. Metti entrambe le parti tra virgolette doppie quando interroghi un indice:

    SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'
  3. Mantieni le virgolette singole solo per i valori stringa — i nomi tra virgolette doppie, i valori tra virgolette singole. Confonderli produce esattamente questa classe di errore di parsing.

  4. Metti le virgolette in modo difensivo negli statement generati — se il tuo codice interpola i nomi delle tabelle in PartiQL, emettili sempre tra virgolette doppie; è valido anche quando il nome non ne avrebbe strettamente bisogno.

L'app desktop DynoTable include un SQL workbench per DynamoDB che gestisce le virgolette degli identificatori per te, e il DynamoDB Expression Builder mostra la richiesta nativa Query/Scan equivalente quando preferisci evitare del tutto il parsing PartiQL.

Errori correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.