Đây dường như là một sự hiểu lầm. Hãy xem xét sự nhấn mạnh đậm của tôi :
CẢNH BÁO rõ ràng thuộc về một giao dịch đồng thời khác , không bắt đầu một giao dịch rõ ràng. commit
bị đặt sai vị trí ở đó , vì nó đang hoạt động ở chế độ tự động gửi.
Nếu bạn tiếp tục đọc nhật ký của mình, bạn có thể sẽ tìm thấy một mục nhập cho cam kết sâu hơn:
Gỡ lỗi
Nếu bạn không tìm thấy điều đó cũng như rollback
mục nhập cũng như lỗi, tôi sẽ kiểm tra các vấn đề trong ứng dụng của bạn khi để lại các giao dịch zombi chưa cam kết, đây sẽ là một điều tồi tệ .
Bắt đầu điều tra bằng cách kiểm tra chế độ xem hệ thống pg_stat_activity
khi được kết nối với cơ sở dữ liệu của bạn:
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
giá trị idle
không nhất thiết phải đáng ngờ - chỉ là một phiên đang chờ nhập.
Nhưng idle in transaction
và idle in transaction (aborted)
đang.
Thông tin thêm trong hướng dẫn tại đây hoặc các câu trả lời liên quan sau:
- Làm cách nào để loại bỏ cơ sở dữ liệu PostgreSQL nếu có các kết nối đang hoạt động với nó?
- Có không hết thời gian chờ cho các kết nối PostgreSQL không hoạt động?