PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql - Datenbank kann aufgrund einiger automatischer Verbindungen zur DB nicht gelöscht werden

Sie können zukünftige Verbindungen verhindern:

REVOKE CONNECT ON DATABASE thedb FROM public;

(und möglicherweise andere Benutzer/Rollen; siehe \l+ in psql )

Sie können dann alle Verbindungen zu dieser Datenbank außer Ihrer eigenen beenden:

SELECT pid, pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE datname = current_database() AND pid <> pg_backend_pid();

Auf älteren Versionen pid hieß procpid damit müssen Sie sich abfinden.

Da Sie CONNECT widerrufen haben Rechte, was auch immer versucht hat, sich automatisch zu verbinden, sollte dies nicht mehr tun können.

Sie können die Datenbank jetzt löschen.

Dies funktioniert nicht, wenn Sie Superuser-Verbindungen für den normalen Betrieb verwenden, aber wenn Sie dies tun, müssen Sie dieses Problem zuerst beheben.

Nachdem Sie die Datenbank gelöscht haben und die Datenbank erneut erstellen, können Sie den folgenden Befehl ausführen, um den Zugriff wiederherzustellen

GRANT CONNECT ON DATABASE thedb TO public;