PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao giao dịch PostgreSQL này đưa ra CẢNH BÁO:không có giao dịch nào đang diễn ra

Đâ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 transactionidle 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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận số hàng từ lệnh COPY

  2. Postgresql:Hợp nhất 2 cơ sở dữ liệu tương tự

  3. Liệt kê tất cả tên chỉ mục, tên cột và tên bảng của cơ sở dữ liệu PostgreSQL

  4. Truy vấn PostgreSQL với các cột động và số lượng từ phép tham gia

  5. Tách chuỗi với hai dấu phân cách và kiểu chuyển đổi