Perché stai cercando di eseguire dropDb
comando sul database, a cui hai una connessione aperta.
Secondo la documentazione di Postgres:
Questo ha senso, perché quando si elimina l'intero database, tutte le connessioni aperte che fanno riferimento a quel database diventano non valide, quindi l'approccio consigliato è connettersi a un database diverso ed eseguire nuovamente questo comando.
Se stai affrontando una situazione in cui un client diverso è connesso al database e vuoi davvero eliminare il database, puoi disconnettere forzatamente tutto il client da quel particolare database.
Ad esempio, per disconnettere forzatamente tutti i client dal database mydb
:
Se PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Altro
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Nota: Questo comando richiede i privilegi di superutente.
Quindi, puoi connetterti a un database diverso ed eseguire dropDb
comando di nuovo.