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

ERR DISCARD without MULTI: DISCARD without MULTI

Redis

O que significa?

DISCARD foi enviado sem nenhum bloco MULTI aberto. DISCARD é usado apenas para cancelar uma transação em andamento; ele retorna este erro quando não há nada a cancelar.

Por que acontece?

Chamar DISCARD sem MULTI, ou novamente depois que a transação já foi fechada com EXEC/DISCARD; uma chamada incondicional de DISCARD no código de tratamento de erros; ou o estado da conexão diferente do esperado (MULTI não está aberto na conexão obtida do pool).

Como resolver

Chame DISCARD somente quando um MULTI estiver de fato aberto; acompanhe o estado da transação no código. Nos tratadores de erro, verifique se há uma transação aberta antes de chamar DISCARD. Use o wrapper de transação da sua biblioteca para que ele gerencie o estado automaticamente. Garanta um estado limpo no pool de conexões.

Abrir no DBAtlas →

Mais entradas deste banco