ValidationException: imprevisto dall'origine
TL;DR — Il nome della tabella nella clausola PartiQL FROM contiene caratteri che il parser non accetterà, 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 sourceIl parser PartiQL legge FROM my-table come identificatore my seguito da token inaspettati: il trattino non è valido all'interno di un semplice identificatore. DynamoDB i nomi delle tabelle possono contenere legalmente -, . e _, quindi un nome di tabella perfettamente valido può ancora non essere analizzabile in PartiQL finché non viene citato tra virgolette. Lo stesso vale per i nomi che entrano in conflitto con PartiQL parole chiave.
Perché succede
- Il nome della tabella contiene un trattino o un punto —
users-prod,app.events. I semplici identificatori non possono trasportarli. - Nomi di tabella generati dal framework: uno strumento che aggiunge un suffisso a un ambiente o a uno stage sul nome della tabella (ad esempio
Todo-dev) è il classico modo in cui entra un trattino senza che tu lo scelga. - Interrogazione di un indice senza virgolette — il modulo
"tabella"."indice"necessita di virgolette doppie per racchiudere 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 risolverlo
Racchiudere tra virgolette doppie il nome della tabella:
SELECT * FROM "users-prod" WHERE pk = 'USER#42'Racchiudere entrambe le parti tra virgolette doppie quando si esegue una query su un indice:
SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'Mantieni virgolette singole solo per valori stringa: nomi tra virgolette doppie, valori tra virgolette singole. Mescolarli produce esattamente questa classe di errori di analisi.
Quota difensiva nelle istruzioni generate - se il tuo codice interpola i nomi delle tabelle in PartiQL, inseriscili sempre tra virgolette doppie; è valido anche quando il nome non ne avrebbe strettamente bisogno.
Preferire la query nativa quando possibile. Una richiesta
Query/Scanelude completamente le regole dell'identificatore PartiQL per letture semplici.
Eseguilo in DynoTable
L'editor PartiQL di DynoTable mette automaticamente tra virgolette doppie i nomi di tabelle e indici: esegui SELECT * FROM "my-table" con la diagnostica in linea prima di incollare l'istruzione nel codice SDK. Apri la tabella con ⌘K per confermare il nome esatto della tabella (compresi i trattini) dalla barra laterale.
Quando l'analisi PartiQL continua a fallire, passa al Builder di query per la richiesta nativa equivalente. Il cambio profilo (⌘P) e Test connessione in Impostazioni → Profili mantengono la dichiarazione puntata sulla tabella a destra. Consulta Connetti a AWS e Installa.
Fonti
- PartiQL istruzioni select per DynamoDB (verificato il 13-07-2026)
- Tipi di dati supportati e regole di denominazione (verificato il 13-07-2026)
Riproducilo
Un'istruzione PartiQL la cui origine FROM non è un nome di tabella. Il parser lo rifiuta prima ancora di cercare una tabella, quindi questo si riproduce su qualsiasi endpoint:
await client.send(new ExecuteStatementCommand({Statement: 'SELECT * FROM 123'}));Produzione reale:
ValidationException: Unexpected from source
HTTP 400Confrontalo con un nome senza virgolette ma altrimenti valido: SELECT * FROM repro analizza bene e successivamente fallisce con ResourceNotFoundException se non esiste una tabella di questo tipo. Unexpected from source è strettamente un errore di analisi, quindi leggilo come un segnale di sintassi, non come un segnale di tabella mancante.
Errori correlati
- DuplicateItemException — PartiQL
INSERTsu una chiave esistente. - ValidationException — la classe dell'eccezione genitore.
- Impara: PartiQL esempi · SQL for DynamoDB
Riferimenti
- PartiQL istruzioni select per DynamoDB — Guida per sviluppatori Amazon DynamoDB
- Tipi di dati supportati e regole di denominazione in Amazon DynamoDB — Guida per sviluppatori di Amazon DynamoDB
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.
Riprodotto il 26-07-2026 rispetto a DynamoDB Local 2.x con AWS SDK per JavaScript v3.1095.0: l'output sopra è letterale.