Fordi du forsøger at udføre dropDb
kommando på databasen, som du har åben forbindelse til.
Ifølge postgres dokumentation:
Dette giver mening, for når du dropper hele databasen, bliver al den åbne forbindelse, der refererer til den pågældende database, ugyldig, så den anbefalede fremgangsmåde er at oprette forbindelse til en anden database og udføre denne kommando igen.
Hvis du står over for en situation, hvor en anden klient er forbundet til databasen, og du virkelig ønsker at droppe databasen, kan du tvangsfrakoble hele klienten fra den pågældende database.
For eksempel at tvangsfrakoble alle klienter fra databasen mydb
:
Hvis PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Andet
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Bemærk: Denne kommando kræver superbrugerrettigheder.
Derefter kan du oprette forbindelse til en anden database og køre dropDb
kommando igen.