DBAtlas · Veritabanı operasyon atlası

ERR DISCARD without MULTI: DISCARD without MULTI

Redis

Ne demek?

Açık bir MULTI bloğu yokken DISCARD komutu gönderildi. DISCARD yalnızca devam eden bir transaction'ı iptal etmek için kullanılır; ortada iptal edilecek bir transaction olmadığında bu hatayı verir.

Neden olur?

MULTI çağrılmadan ya da transaction zaten EXEC/DISCARD ile kapatıldıktan sonra tekrar DISCARD çağırmak; hata işleme (error handling) kodunda koşulsuz DISCARD çağrısı; ya da bağlantı durumunun beklenenden farklı olması (havuzdan gelen bağlantıda MULTI açık değil).

Nasıl çözülür?

DISCARD'ı yalnızca gerçekten açık bir MULTI varken çağırın; transaction durumunu koddan takip edin. Hata işleyicilerinde DISCARD çağırmadan önce bir transaction açık mı diye kontrol edin. Kütüphanenizin transaction sarmalayıcısını kullanarak durumu otomatik yönetmesini sağlayın. Bağlantı havuzunda temiz durum garantisi verin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar