DBAtlas · Veritabanı operasyon atlası

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

Ne demek?

Bağlantı Pub/Sub abonelik (subscribe) moduna girdikten sonra, bu modda izin verilmeyen normal bir komut (ör. GET/SET) çalıştırmaya çalıştınız. Abonelik modundaki bir bağlantı yalnızca sınırlı komutları kabul eder. Eski sürümlerde mesaj "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context" biçimindeydi.

Neden olur?

SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE ile aboneliğe geçmiş bir bağlantı üzerinden veri komutu göndermek. RESP2 protokolünde abone olmuş bir bağlantı yalnızca (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT ve RESET komutlarına izin verir. Tek bir bağlantıyı hem pub/sub hem normal işler için paylaşmak tipik hatadır.

Nasıl çözülür?

Pub/Sub için ayrı bir bağlantı kullanın; normal komutlar için başka bir bağlantı açın (çoğu istemci kütüphanesi bunu otomatik yapar). Abonelikten çıkmak için UNSUBSCRIBE/PUNSUBSCRIBE gönderin, ardından normal komutlar çalışır. RESP3 protokolünde (HELLO 3) abone bağlantı üzerinde diğer komutlara da izin verilir; sürücünüz destekliyorsa RESP3'e geçebilirsiniz.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar