Hier ist mein Hack... =D
# Make sure no one can connect to this database except you!
sudo -u postgres /usr/pgsql-9.4/bin/psql -c "UPDATE pg_database SET datallowconn=false WHERE datname='<DATABASE_NAME>';"
# Drop all existing connections except for yours!
sudo -u postgres /usr/pgsql-9.4/bin/psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '<DATABASE_NAME>' AND pid <> pg_backend_pid();"
# Drop database! =D
sudo -u postgres /usr/pgsql-9.4/bin/psql -c "DROP DATABASE <DATABASE_NAME>;"
Ich habe diese Antwort gegeben, weil ein Befehl (oben) zum Blockieren neuer Verbindungen enthalten ist und weil jeder Versuch mit dem Befehl ...
REVOKE CONNECT ON DATABASE <DATABASE_NAME> FROM PUBLIC, <USERS_ETC>;
... funktioniert nicht, um neue Verbindungen zu blockieren!
Danke an @araqnid @GoatWalker! =D
https://stackoverflow.com/a/3185413/3223785
1 Stimmen
Mit welcher Version von PostgreSQL arbeiten Sie?
2 Stimmen
Problem: Sie können zwar die mit der Datenbank verbundenen Sitzungen beenden, aber sie können sich so schnell wieder verbinden, dass Sie die Datenbank trotzdem nicht löschen können. Glücklicherweise zeigt dieser Beitrag, wie man neue Verbindungen sperrt, so dass man die aktuellen Verbindungen beenden und die Datenbank wie geplant löschen kann: dba.stackexchange.com/questions/11893/
1 Stimmen
Ich fand diese Antwort auf dba.stackexchange sehr hilfreich dba.stackexchange.com/a/11895/163539 -- kurz und bündig, aber ausreichend erklärend.