14th September 2023: PostgreSQL 16 Released!
Unsupported versions: 7.0 / 6.5 / 6.4
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.



DROP DATABASE — Removes an existing database



The name of an existing database to remove.



This message is returned if the command is successful.

ERROR: user 'username' is not allowed to create/drop databases

You must have the special CREATEDB privilege to drop databases. See CREATE USER.

ERROR: dropdb: cannot be executed on the template database

The template1 database cannot be removed. It's not in your interest.

ERROR: dropdb: cannot be executed on an open database

You cannot be connected to the the database your are about to remove. Instead, you could connect to template1 or any other database and run this command again.

ERROR: dropdb: database 'name' does not exist

This message occurs if the specified database does not exist.

ERROR: dropdb: database 'name' is not owned by you

You must be the owner of the database. Being the owner usually means that you created it as well.

ERROR: dropdb: May not be called in a transaction block.

You must finish the transaction in progress before you can call this command.

NOTICE: The database directory 'xxx' could not be removed.

The database was dropped (unless other error messages came up), but the directory where the data is stored could not be removed. You must delete it manually.


DROP DATABASE removes the catalog entries for an existing database and deletes the directory containing the data. It can only be executed by the database owner (usually the user that created it).


This command cannot be executed while connected to the target database. Thus, it might be more convenient to use the shell script dropdb, which is a wrapper around this command, instead.

Refer to CREATE DATABASE for information on how to create a database.



DROP DATABASE statement is a Postgres language extension; there is no such command in SQL92.