Ich versuche, meine Datenbank zu löschen und über die Befehlszeile eine neue zu erstellen.
Ich melde mich mit an psql -U username
und mache dann a \connect template1
, gefolgt von a DROP DATABASE databasename;
.
Ich bekomme den Fehler
Datenbank Datenbankname wird von anderen Benutzern aufgerufen
Ich habe Apache heruntergefahren und es erneut versucht, aber ich erhalte immer noch diesen Fehler. Mache ich etwas falsch?
database
postgresql
iman453
quelle
quelle
dropdb databasename
Befehl nur über die Befehlszeile ausführen ?psql -U <user> -c "drop database protodb"
(ohne Datenbanknamen)drop database <dataabase_name>;
Vergiss das Komma nicht.Antworten:
Sie können den Befehl dropdb über die Befehlszeile ausführen :
Beachten Sie, dass Sie ein Superuser oder der Datenbankeigentümer sein müssen, um ihn löschen zu können.
Sie können auch in der Ansicht pg_stat_activity überprüfen, welche Art von Aktivität derzeit für Ihre Datenbank ausgeführt wird, einschließlich aller inaktiven Prozesse.
quelle
dropuser
Befehl, um auch den Benutzer zu entfernen.\l
um alle Datenbanken zu sehen, die Sie haben.Das hat bei mir funktioniert:
für postgresql vor 9.2 ersetzen
pid
durchprocpid
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
quelle
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
column "procpid" does not exist
für Amazon RDS Postgres 9.6 InstanzVersuche dies. Beachten Sie, dass keine Datenbank angegeben ist - sie wird nur "auf dem Server" ausgeführt.
Wenn das nicht funktioniert, habe ich ein Problem mit Postgres gesehen, die an verwaisten vorbereiteten Aussagen festhalten.
Gehen Sie folgendermaßen vor, um sie zu bereinigen:
Führen Sie dann für jede ID, die Sie sehen, Folgendes aus:
quelle
Wenn die Meldung lautet, dass Benutzer verbunden sind, was bedeutet die Abfrage "select * from pg_stat_activity"; sagen? Sind die anderen Benutzer außer Ihnen jetzt verbunden? In diesem Fall müssen Sie möglicherweise Ihre Datei pg_hba.conf bearbeiten, um Verbindungen von anderen Benutzern abzulehnen, oder die App herunterfahren, die auf die pg-Datenbank zugreift, um sie löschen zu können. Ich habe dieses Problem gelegentlich in der Produktion. Stellen Sie pg_hba.conf so ein, dass es zwei Zeilen wie folgt enthält:
und weisen Sie pgsql an, neu zu laden oder neu zu starten (dh entweder sudo /etc/init.d/postgresql reload oder pg_ctl reload). Jetzt können Sie nur noch über lokale Sockets eine Verbindung zu Ihrem Computer herstellen. Ich gehe davon aus, dass Sie unter Linux sind. Wenn nicht, muss dies möglicherweise an etwas anderem als local / ident in dieser ersten Zeile angepasst werden, an etwas wie host ... yourusername.
Jetzt sollten Sie in der Lage sein:
quelle