DBAtlas · Veritabanı operasyon atlası

25001: active_sql_transaction

PostgreSQL

Ne demek?

Yalnızca bir transaction'ın dışında ya da başlangıcında çalışabilen bir komut, aktif bir transaction devam ederken çağrıldı. Bazı komutlar bir transaction bloğu içindeyken çalışmaz.

Neden olur?

SET TRANSACTION ISOLATION LEVEL gibi ayarlar, blokta ilk sorgudan önce yapılmalıdır ('SET TRANSACTION ISOLATION LEVEL must be called before any query'). Benzer şekilde bazı komutlar açık bir BEGIN/transaction içinde reddedilir. Genellikle uygulamanın autocommit'i kapatıp sessiz bir transaction başlatmasından kaynaklanır.

Nasıl çözülür?

Transaction düzeyi ayarlarını transaction'ın en başında, herhangi bir sorgu çalıştırılmadan yapın: BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ... İstemci kütüphanesinin örtük bir transaction açıp açmadığını kontrol edin (autocommit ayarı). Bir transaction bloğu içinde çalışamayan komutlar için önce COMMIT/ROLLBACK ile mevcut transaction'ı kapatın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar