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

ERR Can't execute '<cmd>': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context: Command not allowed in subscribe context (comando não permitido no contexto de assinatura)

Redis

O que significa?

Depois que a conexão entrou no modo de assinatura do Pub/Sub, você tentou executar um comando comum (por exemplo, GET/SET) que não é permitido nesse modo. Uma conexão em modo de assinatura aceita apenas um conjunto limitado de comandos. Em versões antigas, a mensagem era "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".

Por que acontece?

Enviar comandos de dados por uma conexão que passou para o modo de assinatura com SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE. No protocolo RESP2, uma conexão com assinatura permite apenas (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT e RESET. Compartilhar uma única conexão para pub/sub e trabalho comum é o erro típico.

Como resolver

Use uma conexão dedicada para Pub/Sub e abra outra para comandos comuns (a maioria das bibliotecas cliente faz isso automaticamente). Envie UNSUBSCRIBE/PUNSUBSCRIBE para sair do modo de assinatura; os comandos comuns voltam a funcionar. No protocolo RESP3 (HELLO 3), outros comandos também são permitidos em uma conexão com assinatura; mude para RESP3 se o seu driver suportar.

Abrir no DBAtlas →

Mais entradas deste banco