DBAtlas · Atlas für Datenbankbetrieb

ERR MULTI calls can not be nested: MULTI calls can not be nested

Redis

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank