ERR MULTI calls can not be nested: MULTI calls can not be nested
RedisO 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).
Mais entradas deste banco
- 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 (older versions: Unsupported CONFIG parameter) (opção ou número de argumentos desconhecidos para CONFIG SET)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable (o script Lua tentou acessar uma variável global inexistente)
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster) (requisição com várias chaves durante o rehashing do slot)
- ERR DISCARD without MULTIDISCARD without MULTI