Un operando nell'espressione di aggiornamento ha un tipo di dati errato
TL;DR — L'azione dell'aggiornamento viene controllata per tipo rispetto a ciò che è effettivamente memorizzato (e rispetto al valore inviato) e uno di essi non si adatta: ADD rispetto a un attributo che non è un numero o un set, list_append rispetto a qualcosa che non è un elenco o un operando set il cui tipo di elemento non corrisponde al set memorizzato. Abbina l'operando al tipo memorizzato o correggi l'elemento il cui tipo è andato alla deriva.
Cosa significa
ValidationException: An operand in the update expression has an incorrect data typeLe azioni di aggiornamento hanno regole di tipo rigide: ADD funziona solo su numeri e set (SS/NS/BS), DELETE solo su set e list_append accetta due list. DynamoDB valuta l'espressione rispetto ai tipi di attributo correnti dell'elemento in fase di scrittura, quindi la stessa richiesta può avere successo su un elemento e fallire su un altro il cui attributo contiene un tipo diverso. Un cugino stretto viene rifiutato prima, al momento dell'analisi dell'espressione, quando il tipo del valore inviato non può mai adattarsi all'operatore:
ValidationException: Invalid UpdateExpression: Incorrect operand type for
operator or function; operator: ADD, operand type: LISTPerché succede
ADD counter:onemacounterè memorizzato come stringa — ad es. l'elemento è stato importato con"5"(tipoS) invece di5(tipoN).ADD tag :tcon un operando elenco (L) —ADDraccoglie in set, non elenchi. Gli elenchi vengono aggiunti conSET+list_append.list_append(mylist, :v)dovemylistè una mappa, un insieme o uno scalare — entrambi gli argomenti devono essere elenchi (racchiudere un singolo elemento in un elenco di un solo elemento).- Mancata corrispondenza del tipo di elemento del set —
ADD/DELETEcon un operando di set di stringhe (SS) rispetto a un set di numeri memorizzato (NS) o viceversa. - Deriva del tipo tra gli elementi: autori misti (una vecchia importazione, un altro servizio) hanno lasciato lo stesso attributo "N" su alcuni elementi e "S" su altri, quindi l'aggiornamento fallisce solo a volte.
Come risolverlo
Contatori: memorizza il valore come numero e invia un operando numerico:
UpdateExpression: 'ADD #c :one', ExpressionAttributeValues: {':one': 1} // {N: "1"} — not a stringElenchi: utilizza
SETconlist_appende racchiudi il nuovo elemento in un elenco:UpdateExpression: 'SET #l = list_append(if_not_exists(#l, :empty), :new)', ExpressionAttributeValues: {':new': ['item'], ':empty': []}Insiemi: mantengono gli operandi
ADD/DELETEnello stesso tipo di insieme dell'attributo memorizzato (SSconSS,NSconNS).Correggi gli elementi alla deriva: trova gli elementi il cui attributo porta il tipo sbagliato e riscrivili una volta; il sintomo "lo stesso aggiornamento non riesce su alcuni elementi" è sempre un dato, non un codice.
Leggi l'elemento prima dell'aggiornamento. Un rapido
GetItemmostra secounterèNoSsu quella riga specifica.
Aprilo in DynoTable
L'editor degli elementi di DynoTable mostra il tipo memorizzato di ciascun attributo (S, N, L, SS, ...) accanto al suo valore: una stringa "5" che sostituisce un contatore numerico è ovvia prima di eseguire ADD. Apri l'elemento con ⌘K e controlla i tipi, quindi utilizza lo staging (⌘S) per testare l'aggiornamento.
Crea l'espressione corretta nel Generatore di espressioni con tag di tipo espliciti. Cambia profilo con ⌘P; vedere Connetti a AWS e Installa.
Fonti
- Utilizzo delle espressioni di aggiornamento in DynamoDB (verificato il 13-07-2026)
- Tipi di dati supportati e regole di denominazione (verificato il 13-07-2026)
Errori correlati
- I tipi float non sono supportati — attrito di tipo numerico dal lato SDK.
- Numero in eccesso
- Tipo non corrispondente: l'elemento chiave non corrisponde allo schema
- Impara: Aggiorna espressioni · Contatori atomici · Tipi di dati
Riferimenti
- Utilizzo delle espressioni di aggiornamento nella Guida per sviluppatori di Amazon DynamoDB DynamoDB
- TransactWriteItems - Riferimento Amazon DynamoDB API
- 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.