Protože se pokoušíte spustit dropDb
příkaz na databázi, ke které máte otevřené připojení.
Podle dokumentace postgres:
To dává smysl, protože když zrušíte celou databázi, všechna otevřená připojení odkazující na tuto databázi se stanou neplatnými. Doporučený přístup je tedy připojit se k jiné databázi a provést tento příkaz znovu.
Pokud čelíte situaci, kdy je k databázi připojen jiný klient a opravdu chcete databázi zrušit, můžete násilně odpojit všechny klienty z této konkrétní databáze.
Například pro násilné odpojení všech klientů z databáze mydb
:
Pokud PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Jinak
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Poznámka: Tento příkaz vyžaduje oprávnění superuživatele.
Poté se můžete připojit k jiné databázi a spustit dropDb
příkaz znovu.