반응형
Postgresql에서 db를 드랍하기 위해 아래 명령어를 입력했다.
DROP DATABASE 데이터베이스명
명령어가 실패하며 ERROR: cannot drop the currently open database 라는 오류가 발생했다.
해당 오류를 해결하고 db를 정상적으로 삭제해보자
원인
현재 내가 연결되어 있는 db가 삭제하고자 하는 데이터베이스명 이거나 다른 사용자가 db를 사용하고 있을 경우에 발생한다.
해결방법
삭제하고자 하는 db에 연결되어있는 모든 클라이언트의 연결을 종료한 후에 db를 삭제한다.
슈퍼권한이 있는 유저로 전환한 후 아래에서 해당하는 명령어를 사용한다.
- postgresql의 버전이 9.2 보다 낮다면 아래 명령어를 사용한다.
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = '지우고싶은 db명';
- postgresql의 버전이 9.2 보다 높다면 아래 명령어를 사용한다.
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '지우고싶은 db명';
위 명령어를 사용해서 db에 연결되어있는 클라이언트들의 연결을 강제 종료 할 수 있다.
만약 위 명령어로도 삭제가 되지 않는다면 현재 내가 사용하고 있는 db를 변경하고 다시 시도해보자
반응형