PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Capistrano с PostgreSQL, грешка:базата данни е достъпна от други потребители

С PostgreSQL можете да издадете следния оператор, за да върнете pid-овете на задния край на всички отворени връзки, различни от тази:

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

След това можете да подадете заявка за прекратяване към всеки от тези бекенди с

SELECT pg_terminate_backend($1);

Свързване на pids, върнати от първия израз към всяко pg_terminate_backend exec.

Ако другите връзки не използват същия потребител като вас, ще трябва да се свържете като суперпотребител, за да издадете успешно прекъсванията.

АКТУАЛИЗАЦИЯ:Включване на коментари и изразяване като задача на 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. Групово/партидна актуализация/внасяне в PostgreSQL

  2. Транспониране на sql резултат, така че една колона да отива в няколко колони

  3. Най-добрият начин да проверите за празна или нулева стойност

  4. Грешка при недефиниран метод `to_key' за [xxx] :Array при опит за използване на данни от масив на Active Admin table_for (Rails, Postgresql, postgres_ext gem)

  5. Вземете дати от ден от седмицата в диапазон от дати