728x90
반응형
질문 : 활성 연결이있는 경우 PostgreSQL 데이터베이스를 삭제하는 방법은 무엇입니까?
PostgreSQL 데이터베이스를 삭제하는 스크립트를 작성해야합니다. 많은 연결이있을 수 있지만 스크립트는이를 무시해야합니다.
표준 DROP DATABASE db_name
쿼리는 열린 연결이있는 경우 작동하지 않습니다.
문제를 어떻게 해결할 수 있습니까?
답변
다음을 제외한 기존 연결이 삭제됩니다.
pg_stat_activity
쿼리하고 죽이려는 pid 값을 SELECT pg_terminate_backend(pid int)
를 실행합니다.
PostgreSQL 9.2 이상 :
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();
PostgreSQL 9.1 이하 :
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND procpid <> pg_backend_pid();
모든 사람의 연결을 끊으면 연결을 끊고 드롭하려는 데이터베이스가 아닌 다른 데이터베이스의 연결에서 DROP DATABASE 명령을 실행해야합니다.
procpid 열의 이름이 pid
procpid
. 이 메일 링리스트 스레드를 참조하십시오.
출처 : https://stackoverflow.com/questions/5408156/how-to-drop-a-postgresql-database-if-there-are-active-connections-to-it
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
PostgreSQL : PostgreSQL에서 테이블 표시 (0) | 2021.06.26 |
---|---|
데이터베이스에 암호를 저장하는 가장 좋은 방법 (0) | 2021.06.22 |
SQL Server의 SELECT로 테이블을 업데이트 하는 방법 (0) | 2021.06.18 |
MySQL에서 datetime 또는 timestamp 데이터 유형을 사용하는 이유 (0) | 2021.06.17 |
전체 MySQL 데이터베이스 문자 집합 및 데이터 정렬을 UTF-8로 변환하는 방법 (0) | 2021.06.15 |