DBAtlas · Atlas de operaciones de bases de datos

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 no permitido en el contexto de suscripción)

Redis

¿Qué significa?

Después de que la conexión entrara en el modo de suscripción Pub/Sub, intentó ejecutar un comando normal (p. ej., GET/SET) que no está permitido en este modo. Una conexión en modo de suscripción solo acepta un conjunto limitado de comandos. En versiones antiguas el mensaje era "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".

¿Por qué ocurre?

Enviar comandos de datos por una conexión que ha pasado al modo de suscripción con SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE. En el protocolo RESP2, una conexión suscrita solo permite (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT y RESET. El error típico es compartir una sola conexión para pub/sub y para el trabajo normal.

Cómo solucionarlo

Use una conexión dedicada para Pub/Sub y abra otra para los comandos normales (la mayoría de las bibliotecas cliente lo hacen automáticamente). Envíe UNSUBSCRIBE/PUNSUBSCRIBE para salir del modo de suscripción; después, los comandos normales funcionan. En el protocolo RESP3 (HELLO 3) también se permiten otros comandos en una conexión suscrita; cambie a RESP3 si su driver lo admite.

Abrir en DBAtlas →

Más entradas de este motor