DBAtlas · Atlas de operaciones de bases de datos

ERR DISCARD without MULTI: DISCARD without MULTI

Redis

¿Qué significa?

Se envió DISCARD sin ningún bloque MULTI abierto. DISCARD solo se usa para cancelar una transacción en curso; devuelve este error cuando no hay nada que cancelar.

¿Por qué ocurre?

Llamar a DISCARD sin MULTI, o de nuevo después de que la transacción ya se cerrara con EXEC/DISCARD; una llamada incondicional a DISCARD en el código de manejo de errores; o un estado de la conexión distinto del esperado (no hay MULTI abierto en la conexión tomada del pool).

Cómo solucionarlo

Llame a DISCARD solo cuando haya realmente un MULTI abierto; lleve el control del estado de la transacción en el código. En los manejadores de errores, compruebe si hay una transacción abierta antes de llamar a DISCARD. Use el wrapper de transacciones de su biblioteca para que gestione el estado automáticamente. Garantice un estado limpio en el pool de conexiones.

Abrir en DBAtlas →

Más entradas de este motor