Ich benötige exklusiven Zugriff auf eine Datenbank. Ist es möglich, mit einem SQL-Befehl alle anderen Benutzer von einer Postgres-Datenbank zu trennen? Oder schließen Sie alle anderen Verbindungen und erhalten Sie exklusiven Zugriff.
Dies dient zum Testen von Einheiten und die Tests werden nur manuell ausgeführt, sodass keine Gefahr besteht. Es sind nur alte tote Verbindungen betroffen.
Es gibt keine anderen Benutzer, die eine Verbindung zu diesen unittesten Datenbanken herstellen.
Die alten toten Verbindungen entstehen durch die Entwicklung. Dies passiert die ganze Zeit, wenn ein Test, der gerade geschrieben wird oder fehlschlägt, nicht sauber beendet wird.
Wenn jemand andere Benutzer nach dem Trennen der Verbindung in einem Produktionsszenario für eine Weile aussperren muss, lesen Sie die nachstehende Antwort von Scott Marlowe: /dba//a/6184/2024
Siehe auch diese ähnliche Frage zu dba: Wie löse ich alle Verbindungen zu einer bestimmten Datenbank, ohne den Server zu stoppen?
quelle
procpid
in umbenanntpid
, achten Sie darauf.Es gibt zwei Probleme: Zum einen müssen Sie diese Benutzer trennen und zum anderen müssen Sie sie von Ihrem Server fernhalten. Anstatt die Verbindungserlaubnis zu widerrufen, verwende ich normalerweise pg_hba.conf, um neue Verbindungen von bestimmten Rechnern und / oder Benutzern abzulehnen. Dann mache ich einfach einen Schnellstopp mit pg_ctl -m; pg_ctl start, um alle aktuellen Verbindungen zu löschen. Wenn Slony DDL-Änderungen vornimmt, ist dies so ziemlich eine Notwendigkeit, sonst kommt es überall zu Deadlocks.
quelle