ERR MULTI calls can not be nested: MULTI calls can not be nested
RedisNe demek?
Zaten açık bir MULTI (transaction) bloğu varken tekrar MULTI komutu gönderildi. Redis, iç içe (nested) transaction bloklarını desteklemez; bir seferde yalnızca bir MULTI aktif olabilir.
Neden olur?
Uygulama mantığında EXEC/DISCARD ile kapatılmadan yeni bir MULTI başlatılması; bağlantı havuzunda transaction durumu düzgün sıfırlanmadan aynı bağlantının yeniden kullanılması; ya da kütüphane sarmalayıcısının farkında olmadan iki kez MULTI çağırması.
Nasıl çözülür?
Her MULTI bloğunu tek bir EXEC (veya iptal için DISCARD) ile kapatın ve yeni bloğu ancak öncekini bitirdikten sonra açın. Kod akışında transaction başlangıç/bitişini net ayırın. Bağlantı havuzunda bir bağlantıyı iade etmeden önce açık transaction kalmadığından emin olun. İç içe mantık gerekiyorsa Lua script (EVAL) ile atomik işlem yapmayı değerlendirin.
Aynı motorda diğer kayıtlar
- ERR Can't save in background: fork failedBackground save failed: fork failed
- NOPROTO unsupported protocol versionUnsupported RESP protocol version
- ERR Unknown option or number of arguments for CONFIG SETUnknown option or number of arguments for CONFIG SET (eski sürümlerde: Unsupported CONFIG parameter)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster)
- ERR DISCARD without MULTIDISCARD without MULTI