DBAtlas · Атлас эксплуатации баз данных

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

Redis

Что это значит?

MULTI отправлен повторно, когда блок MULTI (транзакция) уже был открыт. Redis не поддерживает вложенные блоки транзакций; одновременно может быть активен только один MULTI.

Почему возникает?

Логика приложения начинает новый MULTI, не закрыв предыдущий через EXEC/DISCARD; повторное использование того же соединения из пула без корректного сброса состояния транзакции; либо обёртка библиотеки незаметно вызывает MULTI дважды.

Как исправить

Закрывайте каждый блок MULTI одним EXEC (или DISCARD для отмены) и открывайте новый блок только после завершения предыдущего. Чётко разделяйте начало и конец транзакции в потоке кода. Убедитесь, что перед возвратом соединения в пул не осталось открытой транзакции. Если нужна вложенная логика, рассмотрите выполнение атомарной операции с помощью Lua-скрипта (EVAL).

Открыть в DBAtlas →

Ещё по этой СУБД