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
RedisQue signifie cette erreur ?
Après le passage de la connexion en mode subscribe Pub/Sub, vous avez tenté d'exécuter une commande ordinaire (par ex. GET/SET) non autorisée dans ce mode. Une connexion en mode subscribe n'accepte qu'un ensemble limité de commandes. Dans les anciennes versions, le message était "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".
Cause
Envoi de commandes de données sur une connexion passée en mode subscribe avec SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE. Avec le protocole RESP2, une connexion abonnée n'autorise que (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT et RESET. Partager une seule connexion pour le pub/sub et le travail ordinaire est l'erreur typique.
Comment la corriger
Utilisez une connexion dédiée au Pub/Sub et ouvrez-en une autre pour les commandes ordinaires (la plupart des bibliothèques clientes le font automatiquement). Envoyez UNSUBSCRIBE/PUNSUBSCRIBE pour quitter le mode subscribe ; les commandes ordinaires fonctionnent alors. Avec le protocole RESP3 (HELLO 3), d'autres commandes sont aussi autorisées sur une connexion abonnée ; passez à RESP3 si votre driver le prend en charge.
Autres entrées pour ce moteur
- NOGROUP No such key or consumer groupNo such key or consumer group in stream
- NOTBUSY No scripts in execution right nowNo scripts in execution right now
- DENIED Redis is running in protected modeRedis is running in protected mode
- ERR SELECT is not allowed in cluster modeSELECT is not allowed in cluster mode
- ERR wrong number of arguments for commandWrong number of arguments for command
- ERR Background save already in progressBackground save already in progress
- ERR bit offset is not an integer or out of rangeBit offset is not an integer or out of range