Un operando en la expresión de actualización tiene un tipo de datos incorrecto
TL;DR: la acción de actualización se verifica con lo que realmente está almacenado (y con el valor que envió), y uno de ellos no encaja: ADD con un atributo que no es un número o conjunto, list_append con algo que no es una lista, o un operando de conjunto cuyo tipo de elemento no coincide con el conjunto almacenado. Haga coincidir el operando con el tipo almacenado o corrija el elemento cuyo tipo se desvió.
Qué significa
ValidationException: An operand in the update expression has an incorrect data typeLas acciones de actualización tienen reglas de tipo estrictas: ADD funciona solo con números y conjuntos (SS/NS/BS), DELETE solo con conjuntos, y list_append toma dos listas. DynamoDB evalúa la expresión contra los tipos de atributo actuales del Item en el momento de la escritura — así que la misma petición puede tener éxito en un Item y fallar en otro cuyo atributo contiene un tipo diferente. Un pariente cercano se rechaza antes, en el momento de analizar la expresión, cuando el tipo del valor enviado nunca puede encajar con el operador:
ValidationException: Invalid UpdateExpression: Incorrect operand type for
operator or function; operator: ADD, operand type: LISTPor qué ocurre
ADD counter :oneperocounterestá almacenado como cadena — p. ej. el Item se importó con"5"(tipoS) en lugar de5(tipoN).ADD tags :tcon un operando de lista (L) —ADDacumula en conjuntos, no en listas. Las listas se añaden conSET+list_append.list_append(mylist, :v)dondemylistes un mapa, conjunto o escalar — ambos argumentos deben ser listas (envuelve un solo elemento como una lista de un elemento).- Desajuste de tipo de elemento de conjunto —
ADD/DELETEcon un operando de conjunto de cadenas (SS) contra un conjunto de números (NS) almacenado, o viceversa. - Deriva de tipo entre Items — escritores mixtos (una importación antigua, otro servicio) dejaron el mismo atributo como
Nen algunos Items ySen otros, así que la actualización falla solo a veces.
Cómo solucionarlo
Contadores: almacena el valor como número y envía un operando numérico:
UpdateExpression: 'ADD #c :one', ExpressionAttributeValues: {':one': 1} // {N: "1"} — not a stringListas: usa
SETconlist_append, y envuelve el nuevo elemento en una lista:UpdateExpression: 'SET #l = list_append(if_not_exists(#l, :empty), :new)', ExpressionAttributeValues: {':new': ['item'], ':empty': []}Conjuntos: mantén los operandos de
ADD/DELETEcon el mismo tipo de conjunto que el atributo almacenado (SSconSS,NSconNS).Corrige los Items desviados — encuentra los Items cuyo atributo lleva el tipo incorrecto y reescríbelos una vez; el síntoma de "la misma actualización falla en algunos Items" siempre es de datos, no de código.
Lee el Item antes de actualizarlo. Un
GetItemrápido muestra sicounteresNoSen esa fila concreta.
Ábrelo en DynoTable
El editor de Items de DynoTable muestra el tipo almacenado de cada atributo (S, N, L, SS, …) junto a su valor — una cadena "5" haciendo de contador numérico salta a la vista antes de que ejecutes ADD. Abre el Item con ⌘K e inspecciona los tipos; luego usa el área de preparación (⌘S) para probar la actualización.
Construye la expresión corregida en el Expression Builder con etiquetas de tipo explícitas. Cambia de perfil con ⌘P; consulta Conectar con AWS e Instalación.
Fuentes
- Using update expressions in DynamoDB (verificado el 2026-07-13)
- Supported data types and naming rules (verificado el 2026-07-13)
Errores relacionados
- Float types are not supported — fricción de tipo numérico desde el lado del SDK.
- Number overflow
- Desajuste de tipo: el elemento de clave no coincide con el esquema
- Aprende: Update expressions · Atomic counters · Data types
Referencias
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.