789 Stimmen

Wie kann man eine PostgreSQL-Datenbank löschen, wenn es aktive Verbindungen zu ihr gibt?

Ich muss ein Skript schreiben, das eine PostgreSQL-Datenbank löschen soll. Es kann viele Verbindungen zu ihr geben, aber das Skript sollte das ignorieren.

Die Norm DROP DATABASE db_name Die Abfrage funktioniert nicht, wenn es offene Verbindungen gibt.

Wie kann ich das Problem lösen?

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.

0voto

Chtiwi Malek Punkte 10464

In meinem Fall musste ich einen Befehl ausführen, um alle Verbindungen einschließlich meiner aktiven Administratorverbindung zu trennen

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname = current_database()

was alle Verbindungen beendete und eine fatale ''Fehlermeldung'' anzeigte:

FATAL: terminating connection due to administrator command SQL state: 57P01

Danach war es möglich, die Datenbank zu löschen

-1voto

Ashburn RK Punkte 442

Bei mir hat nichts funktioniert, außer, dass ich mich mit pgAdmin4 angemeldet habe und im Dashboard alle Verbindungen außer pgAdmin4 getrennt habe und dann mit einem Rechtsklick auf die Datenbank und den Eigenschaften und der Eingabe des neuen Namens umbenennen konnte.

0 Stimmen

Es ist besser, sich auf die Befehlszeile zu verlassen als auf eine Software-UI für die Datenbankverwaltung, wenn Sie die Verbindung oder andere Befehle / Dienstprogramme auf Datenbankebene steuern müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X