Erreur Postgres "valeur non valide pour le paramètre" 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'

J'obtiens toujours cette erreur en essayant de migrer vers ma base de données postgres. l'aide serait très appréciée!

Stephen Nguyen
la source
2
La commande SET time zone 'UTC'fonctionne dans mon installation PostgreSQL 9.1.4.
Erwin Brandstetter
1
Quelle version de PostgreSQL utilisez-vous? Fonctionne-t-il SET time zone 'UTC'dans une console psql pour vous?
Mark Stosberg
J'utilise 9.1.4 où / comment puis-je entrer le fuseau horaire SET 'UTC'?
Stephen Nguyen
1
Jupitor = # SET fuseau horaire 'UTC'; ERREUR: valeur non valide pour le paramètre "TimeZone": "UTC"
Stephen Nguyen
1
Postgres (v.9.2.4) n'aime pas UTC, utilisez plutôt 'GMT'.
PhoebeB

Réponses:

134

J'ai eu le même problème en utilisant Postgres.app de Heroku. Le redémarrage de mon Mac l'a résolu.

MathiasJ
la source
2
Vraiment bizarre, j'ai essayé de redémarrer l'application et de définir le fuseau horaire. Aucun des deux n'a fonctionné, puis redémarré mac et boom, aucun problème.
Steve
4
J'ai eu ce problème après avoir réinstallé postgress via brew. Le redémarrage de mac a aidé.
maicher
1
le redémarrage de postgresql après la mise à niveau corrige le problème "pg_ctl restart"
Jerzyk
4
le redémarrage de postgres a également fonctionné pour moi. Mon erreur était ERROR: valeur invalide pour le paramètre "TimeZone": "America / Chicago" cependant. Je pensais juste ajouter ce commentaire parce que j'ai perdu du temps à rechercher ce message d'erreur sans me rendre compte que cela se produit également pour UTC
Colin D
1
Honnêtement, je ne peux pas le croire, mais cela a fonctionné.
Ryan Sandridge
76

Le redémarrage de postgresql fonctionne.

Pour redémarrer si vous l'avez installé en utilisant homebrew, brew info postgresqlvous dira de:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Michiel de Mare
la source
8
C'est vrai, cela se produit parce que PostgreSQL a été mis à niveau mais pas redémarré.
Fred
Merci, j'aurais été surpris si un redémarrage avait vraiment été la seule réponse.
sirdharma
6
pour brew, vous pouvez redémarrer encore plus facilement avec brew services restart postgresqlou si vous utilisez une version spécifique, quelque chose commebrew servces restart [email protected]
JiuJitsuCoder
Si je pouvais voter à nouveau, je le ferais. Je viens de rencontrer cette erreur une deuxième fois, j'ai effectué une recherche et j'ai trouvé que ce lien était violet. Le redémarrage de postgres l'a encore résolu pour moi.
Kingdon
18

brew services restart postgresql

Ricardo Ruwer
la source
15

Essayez de redémarrer le serveur. J'ai mis à jour Postgresql via Homebrew mais j'ai oublié de redémarrer le serveur et j'ai eu ce même problème. Je pense que cela est dû au fait que les versions client et serveur ne correspondent pas. psql a commencé avec:

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

Je ne pense pas mériter de points pour cela, mais le redémarrage de mon Postgres.app (ce qui est mieux que le redémarrage de tout le système) l'a résolu pour moi. L'application n'apparaît pas sur le Dock, vous pouvez la trouver dans la barre de navigation en haut de votre fenêtre. J'espère que ça aide de toute façon.

Flavio Wuensche
la source
8

Sur la base de la réponse de @ MathiasJ , au lieu de redémarrer toute ma machine, j'ai couru

brew services restart postgresql@9.6

et ma suite rake db:createa parfaitement fonctionné.

PJSCopeland
la source
1
Cette astuce m'a évité un redémarrage. Merci!
Tim Stewart
4

J'ai aussi eu ce problème.

Connectez-vous à la base de données puis émettez:

set time zone utc;
Paul Meier
la source
23
Cela n'a pas fonctionné pour moi. ERREUR: valeur non valide pour le paramètre "TimeZone": "utc"
Flavio Wuensche
4

En fait, vous avez mis à niveau le serveur postgresql et nettoyé vos anciens dossiers mais vous n'avez pas redémarré votre serveur postgresql. Le serveur a recherché les fichiers de fuseaux horaires dans le répertoire supprimé

Cristian Bica
la source
4

Si rien d'autre ne résout et que vous utilisez homebrew, il y a de fortes chances que vous ayez des problèmes avec les liens actuels.

En supposant que vous ayez deux Postgresversions installées, assurez-vous de dissocier puis de relier à nouveau. Dans mon cas, j'avais besoin des deux versions pour fonctionner pg_upgrade. J'ai postgresql95et postgresqlj'ai donc fait:

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

Cela m'a permis de travailler tous les deux en même temps. J'espère que cela deviendra utile car il m'a fallu un bon moment pour comprendre cela!

fagiani
la source
3

Dans mon cas, le redémarrage de la base de données n'a pas aidé. La mise à jour de tzdata ( apt-get install tzdata) a fait l'affaire pour moi.

dusan
la source
2

il suffit de redémarrer la base de données. Homebrew a mis à jour mon installation Postgres et je n'ai pas encore redémarré.

flamme profonde
la source
2

J'ai eu un problème similaire après la mise à jour des informations de fuseau horaire, c'est-à-dire le téléchargement de la base de données IANA et la compilation à l'aide de zic.

Mon problème a commencé après le redémarrage de PostgreSQL. J'ai obtenu invalid value for parameter TimeZone: UTCet le redémarrage n'a rien fait pour résoudre le problème.

Il s'avère que les informations de mon fuseau horaire ont été complètement faussées après la mise à jour. J'avais des liens symboliques suspendus dans/usr/share/zoneinfo . Depuis une console psql, j'ai obtenu:

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

J'ai supprimé tous ces liens symboliques suspendus. Après avoir fait ça, au moins je pourrais avoirSELECT * FROM pg_timezone_names au travail, mais j'ai toujours la même invalid value...erreur.

Ce qui a finalement résolu le problème pour moi a été de créer un nouveau lien symbolique:

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

Après cela, a SET time zone 'UTC'fonctionné correctement.

Jong Bor Lee
la source
1

Juste une référence rapide pour ceux qui n'utilisent pas Postgres.app, mais qui démarrent psql depuis la ligne de commande ou via launchctl. Vous devrez ajuster les éléments suivants pour savoir où se trouvent vos données Postgres et vos fichiers journaux:

pg_ctl stop
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log
Joey
la source
J'ai fait exactement cela. J'ai l'habitude de démarrer / arrêter les postgres à partir du terminal sur Mac et cela a très bien fonctionné
sebasjimenez10
1

brew services restart postgresqln'a pas résolu pour moi. Je suis sûr que le redémarrage aurait fonctionné, mais je voulais déterminer la cause du problème.


Je pense que le problème a été causé pour moi en raison de deux versions contradictoires de postgresql.

J'avais déjà postgresqlexécuté avec les services de brassage, puis installé, postgresql@11ce qui laissait postgresqlfonctionner les services de brassage même après la désinstallation postgresql.

J'ai résolu ce problème en arrêtant le postgresqlservice de brassage, même s'il n'était pas répertorié dans brew services list.


Étapes à suivre pour reproduire:

$ brew install postgresql
$ brew services start postgresql

$ brew install postgresql@11
$ brew uninstall postgresql

$ brew services start postgresql@11

Comment réparer:

$ brew services stop postgresql

Ouverture d'un problème sur Homebrew demandant l'arrêt automatique du service d'une formule lors de la désinstallation.

JBallin
la source
Mon problème était que j'avais en [email protected]cours d'exécution, puis installé [email protected]. Même si j'avais désinstallé la version 9.5, elle était toujours en cours d'exécution. Le redémarrage de 9.6 ne l'a pas résolu. Le correctif réel consistait à arrêter 9.5, puis à redémarrer 9.6, puis cela a fonctionné.
Simon Kissane
La désinstallation de tout postgresql pourrait aggraver la situation.
theKid
0

Apparemment, une chose similaire se produit également avec Java / JDBC lors de la connexion à Postgres.

La solution consiste à dire à JDBC de signaler le fuseau horaire utilisateur correct à Postgres lors de l'établissement de la connexion.

Donc, mentionner explicitement le fuseau horaire de l'utilisateur lors du démarrage du programme aide:

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

Remarque:

Ajouter ceci ici car il s'agit du premier résultat sur Google pour ce problème de connexion à Postgres!

La source:

Ce commentaire de Yuriy sur le forum de support Jira: https://community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-TimeZone-quot-quot-US-Pacific/qaq-p/ 839426

Teddy
la source