DBAtlas · Atlas für Datenbankbetrieb

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

Redis

Was bedeutet das?

Nachdem die Verbindung in den Pub/Sub-Subscribe-Modus gewechselt ist, wolltest du einen normalen Befehl (z. B. GET/SET) ausführen, der in diesem Modus nicht erlaubt ist. Eine Verbindung im Subscribe-Modus akzeptiert nur eine begrenzte Menge an Befehlen. In älteren Versionen lautete die Meldung "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".

Ursache

Senden von Datenbefehlen über eine Verbindung, die mit SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE in den Subscribe-Modus gewechselt ist. Im RESP2-Protokoll erlaubt eine abonnierte Verbindung nur (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT und RESET. Der typische Fehler ist, eine einzige Verbindung für Pub/Sub und normale Arbeit gemeinsam zu nutzen.

Lösung

Nutze eine eigene Verbindung für Pub/Sub und öffne eine weitere für normale Befehle (die meisten Client-Bibliotheken tun das automatisch). Sende UNSUBSCRIBE/PUNSUBSCRIBE, um den Subscribe-Modus zu verlassen; danach funktionieren normale Befehle. Im RESP3-Protokoll (HELLO 3) sind auf einer abonnierten Verbindung auch andere Befehle erlaubt; wechsle zu RESP3, wenn dein Treiber es unterstützt.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank