Wie kann ich alle meine Postgresql-Verbindungen beenden?
Ich versuche es, rake db:drop
aber ich bekomme:
ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Ich habe versucht, die Prozesse, die ich von a aus sehe, herunterzufahren, ps -ef | grep postgres
aber das funktioniert auch nicht:
kill: kill 2358 failed: operation not permitted
database
postgresql
DanS
quelle
quelle
Antworten:
Sie können pg_terminate_backend () verwenden , um eine Verbindung zu beenden . Sie müssen Superuser sein, um diese Funktion nutzen zu können. Dies funktioniert auf allen Betriebssystemen gleich.
Bevor Sie diese Abfrage ausführen, müssen Sie REVOKE die CONNECT - Privilegien , um neue Verbindungen zu vermeiden:
quelle
sudo
den Kill nicht trotzdem machen können?sudo
in PG.REVOKE
Schritt hat. Du hast jemanden gerettet, noch einmal, denke ich!Vielleicht einfach neu starten
postgres
=>sudo service postgresql restart
quelle
brew services restart postgresql
Wenn SieMit allen Infos zum laufenden Prozess:
quelle
MacOS, wenn postgresql wurde mit installiertem Gebräu :
Quelle: Beenden Sie eine Postgresql-Sitzung / Verbindung
quelle
OSX, Postgres 9.2 (installiert mit Homebrew)
Wenn sich Ihr Datenverzeichnis an einer anderen Stelle befindet, können Sie herausfinden, wo es sich befindet, indem Sie die Ausgabe von untersuchen
ps aux | grep postgres
quelle
brew services restart postgresql
pg_ctl restart -D /usr/local/var/postgres
haben den Trick getan! (Ich habe nicht einmal den ersten oder dritten Befehl ausgeführt).Dies scheint für PostgreSQL 9.1 zu funktionieren:
Aufgehoben von den hier und hier gefundenen Kernpunkten .
Hier ist eine modifizierte Version , die sowohl für PostgreSQL 9.1 als auch für 9.2 funktioniert.
quelle
Ich verwende die folgende Rechenaufgabe, um die Rails-
drop_database
Methode zu überschreiben .lib/database.rake
Bearbeiten: Dies ist für Postgresql 9.2+
quelle
pg_stat_activity.procpid
anstelle vonpg_stat_activity.pid
Postgres 9.1 und niedriger verwenden. Siehe stackoverflow.com/a/5408501/444774Einfacher und aktueller ist:
ps -ef | grep postgres
, um die Verbindungsnummer zu findensudo kill -9 "#"
der VerbindungHinweis: Möglicherweise ist die PID identisch. Wenn man einen tötet, werden alle getötet.
quelle
Ich hatte dieses Problem und das Problem war, dass Navicat mit meiner lokalen Postgres-Datenbank verbunden war. Nachdem ich Navicat getrennt hatte, verschwand das Problem.
BEARBEITEN:
Auch als absolute Notlösung können Sie Ihre Daten dann führen Sie diesen Befehl sichern:
... was alles tötet, auf das der Postgres-Benutzer zugreift. Vermeiden Sie dies auf einer Produktionsmaschine, aber Sie sollten kein Problem mit einer Entwicklungsumgebung haben. Es ist wichtig, dass Sie alle sicherstellen
postgres
Prozess wirklich beendet wurde, bevor Sie versuchen, PostgreSQL danach neu zu starten.EDIT 2:
Aufgrund dieses unix.SE-Beitrags habe ich von
kill -9
zu geändertkill -15
.quelle
Ich habe diesen Weg gelöst:
In meinem Windows8 64- Bit nur
restart
den Dienst: postgresql-x64-9.5quelle
quelle
Ich wollte nur darauf hinweisen, dass Haris 'Antwort möglicherweise nicht funktioniert, wenn ein anderer Hintergrundprozess die Datenbank verwendet. In meinem Fall handelte es sich um verzögerte Jobs. Ich habe Folgendes getan:
Und erst dann konnte ich die Datenbank löschen / zurücksetzen.
quelle
Beenden Sie postgres und starten Sie es neu. Einfach, funktioniert aber jedes Mal bei mir, wo andere CLI-Befehle dies manchmal nicht tun.
quelle
Es ist nicht nötig, es fallen zu lassen. Löschen Sie einfach das öffentliche Schema und erstellen Sie es neu. In den meisten Fällen hat dies genau den gleichen Effekt.
quelle
Remote-Szenario. Aber wenn Sie versuchen, Tests in einer Rails-App auszuführen, erhalten Sie so etwas wie
"ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERROR: Datenbank" myapp_test "wird von anderen Benutzern aufgerufen. DETAIL: Es gibt 1 andere Sitzung, die die Datenbank verwendet."
Stellen Sie sicher, dass Sie pgAdmin oder andere Postgres-GUI-Tools schließen, bevor Sie Tests ausführen.
quelle
Fall:
Fehler beim Ausführen der Abfrage:
Lösung:
a. Zeigen Sie den Abfragestatus Aktivität wie folgt an:
b. Suchen Sie die Zeile, in der die Spalte "Abfrage" Folgendes enthält:
c. Erhalten Sie in derselben Zeile den Wert der Spalte 'PID'
d. Führen Sie die folgenden Skripte aus:
quelle
Ich bin auf einem Mac und benutze Postgres via
Postgres.app
. Ich habe dieses Problem gelöst, indem ich die App beendet und erneut gestartet habe.quelle
Öffnen Sie PGadmin, um festzustellen, ob eine Abfrageseite geöffnet ist, schließen Sie alle Abfrageseiten, trennen Sie den PostgresSQL-Server und verbinden Sie ihn erneut. Versuchen Sie, die Option Löschen / Löschen zu verwenden. Dies hat mir geholfen.
quelle
In PG admin können Sie Ihren Server trennen (Rechtsklick auf den Server) und alle Sitzungen werden beim Neustart getrennt
quelle
Für mich hat folgendes funktioniert:
Ich benutze:
gitlab_edition: "gitlab-ce"
gitlab_version: '12 .4.0-ce.0.el7 '
quelle
Suchen Sie zuerst nach Postgres, dessen Port ausgeführt wird
ps -ef | grep postgres
Es wird die Portnummer zurückgeben
töte -9
port_number
Endlich wieder Postgres starten
quelle