명령어/DB
[PostgreSQL] dropdb 데이터베이스 삭제
jykim23
2026. 7. 30. 22:14
반응형
설치·접속: PostgreSQL 설치와 접속
부제: 데이터베이스를 셸에서 한 줄로 지운다 (되돌릴 수 없음)
dropdb testdb # testdb 삭제
dropdb --echo testdb # 실행되는 SQL도 출력
dropdb --if-exists nope # 없어도 에러 없이 넘어감
SELECT pg_catalog.set_config('search_path', '', false);
DROP DATABASE testdb;
NOTICE: database "nope" does not exist, skippingdropdb는 DROP DATABASE를 감싼 래퍼로, 실행 즉시 데이터가 사라진다. 복구 수단이 없으니 운영 환경에서는 항상 이름을 두 번 확인하고, 가능하면 삭제 전에 pg_dump로 백업을 떠 둔다. 대상 DB에 접속 세션이 하나라도 남아 있으면 삭제가 거부되므로, 스크립트에서는 --force(PostgreSQL 13+)로 세션을 강제 종료하거나 미리 연결을 끊어야 한다. --if-exists는 존재 여부를 모를 때 스크립트가 죽지 않게 해 주는 안전판이다.
이렇게도 쓴다
접속 세션이 있어도 강제로 끊고 지운다. (PostgreSQL 13+)
dropdb --force staging_db
지우기 전에 자동으로 백업부터 뜬다. (pg_dump 조합)
pg_dump -Fc olddb -f /backup/olddb_$(date +%F).dump && dropdb olddb
없을 수도 있는 임시 DB를 조용히 정리한다. (CI 뒷정리)
dropdb --if-exists test_ci_$BUILD_ID
접속을 강제 종료한 뒤 삭제한다. (psql 조합)
psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='olddb';" && dropdb olddb
test_로 시작하는 임시 DB를 한꺼번에 청소한다. (xargs 조합)
psql -tAc "SELECT datname FROM pg_database WHERE datname LIKE 'test_%'" | xargs -r -n1 dropdb
원격 서버의 DB를 지운다. (호스트·유저 지정)
dropdb -h db.internal -U postgres --interactive orders_old반응형