The provided expression refers to an attribute that does not exist in the item

In breve — Il tuo UpdateExpression legge un attributo che non è presente sull'Item — un operando aritmetico (SET score = score + :inc quando score non è mai stato impostato), una copia da un altro attributo (SET a = b), o un list_append il cui operando lista è mancante. Proteggi la lettura con if_not_exists, o inizializza l'attributo alla creazione dell'Item. (Scrivere su un percorso nidificato la cui mappa genitore è mancante genera il diverso errore "document path invalid for update".)

Cosa significa

ValidationException: The provided expression refers to an attribute
that does not exist in the item

Questa è una ValidationException HTTP 400. La richiesta è stata analizzata correttamente, ma quando DynamoDB l'ha valutata rispetto all'Item, un attributo che la tua espressione legge — un operando di +/-, la sorgente di una copia SET a = b, o un argomento di list_append — non c'è, quindi l'operando non può risolversi. È lato client e non ripetibile: lo stesso Item + espressione lo riproduce.

Perché succede

  • Aritmetica su un attributo non impostatoSET score = score + :inc genera errore quando score non è mai stato inizializzato; la sintassi di incremento/decremento della documentazione opera su un attributo numerico esistente.
  • Copia da un attributo mancanteSET backupEmail = email quando l'Item non ha email.
  • list_append su una lista mancanteSET tags = list_append(tags, :more) quando tags non esiste ancora.
  • Mappatura errata dei placeholder per un percorso nidificato — mappare l'intero percorso puntato in una singola voce di ExpressionAttributeNames ("#p": "stats.viewCount") invece di sostituire solo la foglia; DynamoDB tratta il letterale "stats.viewCount" come un unico nome di attributo, che è mancante nel momento in cui l'espressione lo legge.
  • Un refuso o maiuscole/minuscole errate in un nome di attributo letto — i nomi degli attributi DynamoDB sono case-sensitive.

Come risolverlo

  1. Proteggi la lettura con if_not_exists così la prima scrittura funziona anche quando l'attributo non c'è ancora:
    SET score = if_not_exists(score, :zero) + :inc
    SET tags = list_append(if_not_exists(tags, :emptyList), :more)
  2. Inizializza l'attributo alla creazione dell'Item — scrivi score: 0, tags: [] fin dall'inizio così le letture successive si risolvono sempre.
  3. Sostituisci solo la foglia in un percorso nidificato — mantieni i punti letterali nell'espressione: SET stats.#c = :v con {"#c": "viewCount"}, non l'intero percorso in un solo nome.
  4. Verifica che l'attributo esista / l'ortografia + maiuscole con un GetItem prima di presumere che il percorso sia valido.
  5. Stai scrivendo un figlio nidificato la cui mappa genitore è mancante? Quello è l'errore fratello — vedi the document path provided in the update expression is invalid for update per il pattern crea-genitore in due passaggi.

Vuoi la forma reale dell'Item davanti a te mentre scrivi l'aggiornamento? L'app desktop DynoTable mostra ogni attributo (incluse mappe e liste nidificate) così un percorso genitore mancante è ovvio a colpo d'occhio.

Errori correlati

Riferimenti

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

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.