Ini sepertinya salah paham. Pertimbangkan penekanan berani saya :
PERINGATAN jelas milik transaksi bersamaan yang berbeda , yang tidak memulai transaksi eksplisit. commit
salah tempat di sana , karena beroperasi dalam mode komit otomatis.
Jika Anda terus membaca log Anda, Anda mungkin akan menemukan entri untuk komit lebih jauh ke bawah:
Debug
Jika Anda tidak menemukan itu atau rollback
entri atau kesalahan, saya akan memeriksa masalah di aplikasi Anda meninggalkan transaksi zombi yang tidak terikat, yang akan menjadi hal buruk .
Mulai penyelidikan dengan memeriksa tampilan sistem pg_stat_activity
saat terhubung ke database Anda:
SELECT *
FROM pg_stat_activity
WHERE datname = current_database() -- only current database
AND pid <> pg_backend_pid() -- except your current session
AND state LIKE 'idle%';
state
nilai idle
tidak selalu mencurigakan - hanya sesi yang menunggu input.
Tapi idle in transaction
dan idle in transaction (aborted)
adalah.
Selengkapnya di manual di sini atau jawaban terkait ini:
- Bagaimana cara menghapus database PostgreSQL jika ada koneksi aktif?
- Apakah ada batas waktu untuk koneksi PostgreSQL yang menganggur?