DBAtlas · Veritabanı operasyon atlası

ERR MULTI calls can not be nested: MULTI calls can not be nested

Redis

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar