PGError: FEHLER: source-Datenbank "template1" wird aufgerufen durch andere Nutzer
Bin ich immer Probleme auftreten-Tests, um die Arbeit mit Postgresql und Schienen 3.
Sowohl die Entwicklung und Produktion von Datenbanken, die ich bekommen kann, um gut zu arbeiten, jedoch ist die test-Datenbank wirft folgenden Fehler wenn ich rake
oder db:test:prepare
usw.
PGError: FEHLER: source-Datenbank "template1" ist, auf die zugegriffen wird, die von anderen Benutzern
Update
Googeln um, es scheint, dass sollte man template0
statt template1
wenn mit createdb eine neue Datenbank zu erstellen, die in Postgres. In typischer “So werde ich die Ursache beseitigen. Aber nicht das symptom" Mode fand ich vendor/rails/railities/lib/task/databases.rake
geändert und Zeile 109 zu Lesen:
createdb #{enc_option} \
-U "#{abcs["test"]["username"]}" \
-T template0 #{abcs["test"]["database"]}
Aber ich weiß nicht wirklich wollen, dass, wie ich bin, mit Schienen, wie ein JUWEL, jeder weiß anderen umgehen oder zu beheben?
Datenbank.yml:
development:
adapter: postgresql
encoding: unicode
database: test1234_development
pool: 5
username: holden
password: postgres
test:
adapter: postgresql
encoding: unicode
database: test1234_test
pool: 5
username: holden
password: postgres
Voller Fehler:
HINWEIS: Datenbank "test1234_test" nicht vorhanden ist, überspringen
PGError: FEHLER: source-Datenbank "template1" ist, auf die zugegriffen wird, die von anderen Benutzern
DETAIL: Es gibt 1 andere Sitzung(en) verwenden die Datenbank.
: DATENBANK ERSTELLEN "test1234_test" ENCODING = 'unicode'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Geschichte:
CREATE DATABASE
funktioniert durch kopieren einer vorhandenen Datenbank. PostgreSQL wird nicht lassen Sie eine Datenbank kopieren, sofern eine andere session verbunden ist. Wenn template1 ist, auf die zugegriffen wird, die von anderen BenutzernCREATE DATABASE
fehl.Die Frage, die Sie beantworten müssen: Warum sind die anderen Sitzungen verbunden template1?
Der Unterschied zwischen template0 und template1
Auf den Punkt, den Sie initialisieren einer Datenbank-cluster, template0 und template1 sind die gleichen. Alle Standort-spezifischen Sachen, die Sie zur Verfügung stellen möchten, jede Datenbank, die Sie erstellen, indem
CREATE DATABASE
sollte in template1. So, zum Beispiel, wenn Sie fügen Sie die prozedurale Sprache PL/python zu vorlage1, jede Datenbank, die Sie später erstellen werden, umfassen PL/python.Die Datenbank template0 ist vorgesehen, um eine "Jungfrau" - Vorlage. Es sollte nur aus standard-Datenbank-Objekte--die, die erstellt durch die Initialisierung der cluster. Als eine "Jungfrau" - Vorlage, es sollte nie geändert werden. Nie.
Wenn Sie angeben müssen, Kodierungs-und Gebietsschema-Einstellungen (Sortierung), dann kann man das durch kopieren template0. Sie können nicht durch kopieren template1.
Dieses problem auftreten, wenn du angemeldet hatte(psql template1 oder psql template0) in template1 und template0 Datenbank und beenden Sie mit nachstehenden Befehl.
Strg + z
Besseren Weg gibt es von db unter postgres-Befehl und dann das problem nicht erstellen:
\q + enter
Gibt es 2 Lösungen, Wenn problem haben.
Lösung - 1
Neu starten, posgres-service wie.
sudo service postgresql restart
Lösung - 2
sudo ps aux | grep template1
Stellen Sie sicher, nicht löschen diese Prozesse
postgres 8363 0.0 0.0 111760 7832 pts/11 T 09:49 0:00 /usr/lib/postgresql/9.5/bin/psql template1
ankit 18119 0.0 0.0 14224 976 pts/14 S+ 12:33 0:00 grep --color=auto template1
rest sollte mit der kill mit nachstehenden Befehl.
sudo kill -9
Nun versuchen, zu erstellen, die db wieder.
Hoffe, dies hilft Ihnen.
Ankit H Gandhi.
Einfach starten Sie den Dienst der Datenbank.
Bekam ich auch diese Fehlermeldung beim Versuch, die Datenbank zurücksetzen, während ich hatte die Standard-Ruby on Rails server WEBrick laufen:
Die anderen user hier wurde die Rails-app. Nach dem Herunterfahren der server mit STRG + c, ich war in der Lage, re-run der Datenbank-reset-Befehl ohne Probleme.
Macht es Sinn auch. Sie können nicht löschen Sie die Datenbank, wenn jemand anderes ist derzeit verbunden, wie Mike Sherrill auch Punkte aus.
Ich mein system neu gestartet und der Fehler wurde immer noch angezeigt. Jedoch, ich folgte den Schritten unten, um es zu klären.
Beenden Sie alle Prozesse mit der PostgreSQL port 5432 dadurch in der Eingabeaufforderung (Admin): Typ
netstat -ano
in der Eingabeaufforderung. Suchen Sie die pid mit der Lokalen Adresse0.0.0.0:5432
. Dann nutzen Sietaskkill /pid {pid} /f
zu töten, die Aufgabe.Starten Sie den PostgreSQL-Dienst in den windows-Diensten.
Lösung für mich war, löschen die alten server und erstellen Sie eine neue Postgresql-administration web-Schnittstelle. Könnte jetzt erstellen Sie die neue Datenbank ohne diesen Fehler.