Postgres-Fehler "ungültiger Wert für Parameter" TimeZone ":" UTC ""

87
Jupitor$ bundle exec rake db:create db:migrate
APP_development already exists
rake aborted!
PG::Error: ERROR:  invalid value for parameter "TimeZone": "UTC"
: SET time zone 'UTC'

Ich erhalte immer wieder diesen Fehler, wenn ich versuche, in meine Postgres-Datenbank zu migrieren. Hilfe wäre sehr dankbar!

Stephen Nguyen
quelle
2
Der Befehl SET time zone 'UTC'funktioniert in meiner PostgreSQL 9.1.4-Installation.
Erwin Brandstetter
1
Welche PostgreSQL-Version verwenden Sie? Funktioniert SET time zone 'UTC'in einer psql-Konsole für Sie?
Mark Stosberg
Ich verwende 9.1.4. Wo / wie gebe ich die SET-Zeitzone 'UTC' ein?
Stephen Nguyen
1
Jupitor = # SET Zeitzone 'UTC'; FEHLER: ungültiger Wert für Parameter "TimeZone": "UTC"
Stephen Nguyen
1
Postgres (v.9.2.4) mag UTC nicht, verwenden Sie stattdessen 'GMT'.
PhoebeB

Antworten:

133

Ich hatte das gleiche Problem mit der Postgres.app von Heroku. Ein Neustart meines Mac hat das Problem behoben.

MathiasJ
quelle
2
Wirklich komisch, habe versucht, die App neu zu starten und die Zeitzone einzustellen. Weder funktionierte, dann Mac und Boom neu gestartet, keine Probleme.
Steve
4
Ich hatte dieses Problem nach der Neuinstallation von Postgress via Brew. Ein Neustart des Mac hat geholfen.
Maicher
1
Neustart von Postgresql nach dem Upgrade behebt das Problem "pg_ctl restart"
Jerzyk
4
postgres neu zu starten hat auch bei mir funktioniert. Mein Fehler war ERROR: ungültiger Wert für Parameter "TimeZone": "America / Chicago". Ich dachte nur, ich würde diesen Kommentar hinzufügen, weil ich Zeit damit verschwendet habe, nach dieser Fehlermeldung zu suchen, ohne zu bemerken, dass dies auch für UTC passiert
Colin D
1
Ich kann es ehrlich gesagt nicht glauben, aber das hat tatsächlich funktioniert.
Ryan Sandridge
76

Das Neustarten von postgresql funktioniert.

Um neu zu starten, wenn Sie es mit Homebrew installiert haben, brew info postgresqlwerden Sie aufgefordert:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Michiel de Mare
quelle
8
Das passiert, weil PostgreSQL aktualisiert, aber nicht neu gestartet wurde.
Fred
Danke, ich wäre überrascht gewesen, wenn ein Neustart wirklich die einzige Antwort gewesen wäre.
sirdharma
6
Zum Brauen können Sie noch einfacher mit neu starten brew services restart postgresqloder wenn Sie eine bestimmte Version verwenden, so etwas wiebrew servces restart [email protected]
JiuJitsuCoder
Wenn ich das noch einmal stimmen könnte, würde ich es tun. Ich bin gerade ein zweites Mal auf diesen Fehler gestoßen, habe gesucht und festgestellt, dass dieser Link lila ist. Das Neustarten von postgres löste es wieder für mich.
Kingdon
17

brew services restart postgresql

Ricardo Ruwer
quelle
14

Versuchen Sie, den Server neu zu starten. Ich habe Postgresql über Homebrew aktualisiert, aber vergessen, den Server neu zu starten, und habe das gleiche Problem. Ich glaube, das liegt daran, dass die Client- und Serverversionen nicht übereinstimmen. psql begann mit:

$ psql
psql (9.1.4, server 9.1.2)
Type "help" for help.
Turadg
quelle
8

Ich glaube nicht, dass ich dafür Punkte verdient habe, aber ein Neustart meiner Postgres.app (was besser ist als ein Neustart des gesamten Systems) hat es für mich gelöst. Die App wird nicht im Dock angezeigt. Sie finden sie in der Navigationsleiste oben in Ihrem Fenster. Hoffe es hilft trotzdem.

Flavio Wuensche
quelle
8

Basierend auf der Antwort von @ MathiasJ lief ich, anstatt meinen gesamten Computer neu zu starten

brew services restart postgresql@9.6

und meine nachfolgende rake db:createfunktionierte perfekt.

PJSCopeland
quelle
1
Dieser Tipp hat mir einen Neustart erspart. Vielen Dank!
Tim Stewart
4

Ich hatte auch dieses Problem.

Melden Sie sich bei der Datenbank an und geben Sie Folgendes ein:

set time zone utc;
Paul Meier
quelle
23
Hat bei mir nicht funktioniert. FEHLER: ungültiger Wert für Parameter "TimeZone": "utc"
Flavio Wuensche
4

Was tatsächlich passiert ist, ist, dass Sie den Postgresql-Server aktualisiert und Ihre alten Ordner bereinigt haben, aber Ihren Postgresql-Server nicht neu gestartet haben. Der Server hat im gelöschten Verzeichnis nach den Zeitzonendateien gesucht

Cristian Bica
quelle
4

Wenn nichts anderes behoben wird und Sie es gerade verwenden homebrew, haben Sie wahrscheinlich Probleme mit aktuellen Links.

Angenommen, Sie haben zwei PostgresVersionen installiert, stellen Sie sicher, dass Sie die Verknüpfung aufheben und dann erneut verknüpfen. In meinem Fall mussten die beiden Versionen funktionieren, um ausgeführt zu werden pg_upgrade. Ich habe postgresql95und postgresqlso tat ich:

$ brew unlink postgresql
$ brew unlink postgresql95
$ brew link postgresql95
$ brew link --overwrite postgresql 

Das brachte mich beide dazu, gleichzeitig zu arbeiten. Ich hoffe, es wird hilfreich, da ich eine Weile gebraucht habe, um das herauszufinden!

Fagiani
quelle
3

In meinem Fall hat ein Neustart der Datenbank nicht geholfen. Das Aktualisieren von tzdata ( apt-get install tzdata) hat den Trick für mich getan.

dusan
quelle
2

Nur ein Neustart der Datenbank hat geholfen. Homebrew hat meine Postgres-Installation aktualisiert und ich habe noch nicht neu gestartet.

tiefe Flamme
quelle
2

Ich hatte ein ähnliches Problem nach dem Aktualisieren der Zeitzoneninformationen, dh dem Herunterladen der IANA-Datenbank und dem Kompilieren mit zic.

Mein Problem begann tatsächlich nach dem Neustart von PostgreSQL. Ich bekam invalid value for parameter TimeZone: UTCund ein Neustart tat nichts, um das Problem zu lösen.

Es stellte sich heraus, dass meine Zeitzoneninformationen nach dem Update völlig durcheinander waren. Ich hatte baumelnde symbolische Verbindungen /usr/share/zoneinfo. Von einer psql-Konsole bekam ich:

mydb=# SELECT * FROM pg_timezone_names;
ERROR:  could not stat "/usr/share/zoneinfo/PRC": No such file or directory

Ich habe alle diese baumelnden Symlinks gelöscht. Danach konnte ich zumindest SELECT * FROM pg_timezone_nameszur Arbeit gehen, bekam aber immer noch den gleichen invalid value...Fehler.

Was das Problem für mich schließlich gelöst hat, war das Erstellen eines neuen Symlinks:

cd /usr/share/zoneinfo
ln -s Etc/UTC UTC

Danach hat SET time zone 'UTC'richtig funktioniert.

Jong Bor Lee
quelle
1

Nur eine Kurzreferenz für diejenigen, die Postgres.app nicht verwenden, aber psql über die Befehlszeile oder über launchctl starten. Sie müssen Folgendes anpassen, um festzustellen, wo sich Ihre Postgres-Daten und -Protokolldateien befinden:

pg_ctl stop
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log
Joey
quelle
Ich habe genau das getan. Ich bin es gewohnt, Postgres vom Terminal auf dem Mac aus zu starten / zu stoppen, und das hat einwandfrei funktioniert
sebasjimenez10
1

brew services restart postgresqlnicht für mich behoben. Ich bin sicher, ein Neustart hätte funktioniert, aber ich wollte die Ursache des Problems herausfinden.


Ich glaube, das Problem wurde für mich aufgrund von zwei widersprüchlichen Versionen von verursacht postgresql.

Ich hatte bereits postgresqlmit Brühdiensten ausgeführt und dann installiert, postgresql@11was postgresqlauch nach der Deinstallation in den Brühdiensten ausgeführt wurde postgresql.

Ich habe dies behoben, indem ich den postgresqlBrauservice gestoppt habe , obwohl er nicht in aufgeführt war brew services list.


Schritte zum Reproduzieren:

$ brew install postgresql
$ brew services start postgresql

$ brew install postgresql@11
$ brew uninstall postgresql

$ brew services start postgresql@11

Wie repariert man:

$ brew services stop postgresql

Es wurde ein Problem mit Homebrew geöffnet, bei dem angefordert wurde, dass der Dienst einer Formel bei der Deinstallation automatisch gestoppt werden soll.

JBallin
quelle
Mein Problem war, dass ich [email protected]ausgeführt und dann installiert hatte [email protected]. Obwohl ich 9.5 deinstalliert hatte, lief es immer noch. Ein Neustart von 9.6 hat das Problem nicht behoben. Die eigentliche Lösung bestand darin, 9.5 zu stoppen und 9.6 neu zu starten, und dann funktionierte dies.
Simon Kissane
0

Ähnliches passiert anscheinend auch mit Java / JDBC beim Herstellen einer Verbindung zu Postgres.

Die Lösung besteht darin, JDBC anzuweisen, Postgres die richtige Benutzerzeitzone zu melden, während die Verbindung hergestellt wird.

Erwähnen Sie also explizit die Benutzerzeitzone beim Starten des Programms.

java -Duser.timezone=America/Los_Angeles com.example.MyMainClass

Hinweis:

Fügen Sie dies hier hinzu, da dies das erste Ergebnis bei Google für dieses Problem mit der Verbindung zu Postgres ist!

Quelle:

Dieser Kommentar von Yuriy im Jira-Supportforum: https://community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-TimeZone-quot-quot-US-Pacific/qaq-p/ 839426

Teddy
quelle