ERR MULTI calls can not be nested: MULTI calls can not be nested
RedisWas bedeutet das?
MULTI wurde erneut gesendet, während bereits ein MULTI-Block (Transaktion) offen war. Redis unterstützt keine verschachtelten Transaktionsblöcke; es kann jeweils nur ein MULTI aktiv sein.
Ursache
Anwendungslogik startet ein neues MULTI, ohne das vorherige mit EXEC/DISCARD abzuschließen; Wiederverwendung derselben Verbindung aus einem Connection Pool, ohne den Transaktionszustand korrekt zurückzusetzen; oder ein Bibliotheks-Wrapper ruft unbemerkt zweimal MULTI auf.
Lösung
Schließe jeden MULTI-Block mit genau einem EXEC (oder DISCARD zum Abbrechen) und öffne einen neuen Block erst nach Abschluss des vorherigen. Trenne Beginn und Ende der Transaktion im Codeablauf klar. Stelle sicher, dass keine Transaktion offen bleibt, bevor eine Verbindung an den Pool zurückgegeben wird. Ist verschachtelte Logik nötig, erwäge, die atomare Operation mit einem Lua-Skript (EVAL) umzusetzen.
Weitere Einträge zu dieser Datenbank
- 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 (ältere Versionen: Unsupported CONFIG parameter)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster)
- ERR DISCARD without MULTIDISCARD without MULTI