ERR MULTI calls can not be nested: MULTI calls can not be nested
Redis¿Qué significa?
Se envió MULTI de nuevo mientras ya había un bloque MULTI (transacción) abierto. Redis no admite bloques de transacción anidados; solo puede haber un MULTI activo a la vez.
¿Por qué ocurre?
La lógica de la aplicación inicia un nuevo MULTI sin cerrar el anterior con EXEC/DISCARD; se reutiliza la misma conexión de un pool de conexiones sin restablecer correctamente el estado de la transacción; o un wrapper de biblioteca llama a MULTI dos veces sin saberlo.
Cómo solucionarlo
Cierre cada bloque MULTI con un único EXEC (o DISCARD para cancelar) y abra un nuevo bloque solo después de terminar el anterior. Separe claramente el inicio y el fin de la transacción en el flujo del código. Asegúrese de que no quede ninguna transacción abierta antes de devolver una conexión al pool. Si se necesita lógica anidada, considere realizar la operación atómica con un script Lua (EVAL).
Más entradas de este motor
- ERR Can't save in background: fork failedBackground save failed: fork failed
- NOPROTO unsupported protocol versionUnsupported RESP protocol version
- ERR Unknown option or number of arguments for CONFIG SETUnknown option or number of arguments for CONFIG SET (older versions: Unsupported CONFIG parameter) (opción o número de argumentos desconocidos para CONFIG SET)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable (el script Lua intentó acceder a una variable global inexistente)
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster) (solicitud de varias claves durante el rehashing del slot)
- ERR DISCARD without MULTIDISCARD without MULTI