DBAtlas · Atlas de operações de banco de dados

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

Redis

O que significa?

MULTI foi enviado novamente enquanto um bloco MULTI (transação) já estava aberto. O Redis não suporta blocos de transação aninhados; apenas um MULTI pode estar ativo por vez.

Por que acontece?

A lógica da aplicação inicia um novo MULTI sem fechar o anterior com EXEC/DISCARD; reutilizar a mesma conexão de um pool de conexões sem redefinir corretamente o estado da transação; ou um wrapper de biblioteca chamando MULTI duas vezes sem perceber.

Como resolver

Feche cada bloco MULTI com um único EXEC (ou DISCARD para cancelar) e abra um novo bloco somente depois de concluir o anterior. Separe claramente o início/fim da transação no fluxo do código. Garanta que nenhuma transação fique aberta antes de devolver uma conexão ao pool. Se for necessária lógica aninhada, considere fazer a operação atômica com um script Lua (EVAL).

Abrir no DBAtlas →

Mais entradas deste banco