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

Capistrano với PostgreSQL, lỗi:cơ sở dữ liệu đang được người dùng khác truy cập

Với PostgreSQL, bạn có thể đưa ra câu lệnh sau để trả về các pids phụ trợ của tất cả các kết nối mở khác với câu lệnh này:

SELECT pid FROM pg_stat_activity where pid <> pg_backend_pid();

Sau đó, bạn có thể đưa ra yêu cầu chấm dứt đối với từng phụ trợ đó với

SELECT pg_terminate_backend($1);

Ràng buộc các pids được trả về từ câu lệnh đầu tiên với mỗi pg_termina_backend thi hành.

Nếu các kết nối khác không sử dụng cùng một người dùng với bạn, bạn sẽ phải kết nối với tư cách là người dùng cấp cao để phát hành thành công các kết thúc.

CẬP NHẬT:Kết hợp các nhận xét và thể hiện dưới dạng nhiệm vụ Capistrano:

desc "Force disconnect of open backends and drop database"
task :force_close_and_drop_db do
  dbname = 'your_database_name'
  run "psql -U postgres",
      :data => <<-"PSQL"
         REVOKE CONNECT ON DATABASE #{dbname} FROM public;
         ALTER DATABASE #{dbname} CONNECTION LIMIT 0;
         SELECT pg_terminate_backend(pid)
           FROM pg_stat_activity
           WHERE pid <> pg_backend_pid()
           AND datname='#{dbname}';
         DROP DATABASE #{dbname};
      PSQL
end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển đổi giá trị cột jsonb thành nhiều cột trong PostgreSQL

  2. Điều kiện ngoại lệ tùy chỉnh PostgreSQL

  3. Làm cách nào để thực hiện cập nhật không chặn lớn trong PostgreSQL?

  4. Cải thiện hiệu suất truy vấn tổng hợp PostgresSQL

  5. Làm cách nào để khởi động máy chủ PostgreSQL trên Mac OS X?