Postgres错误“参数“ 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'

尝试迁移到我的postgres数据库时,我一直收到此错误。帮助将不胜感激!


2
该命令SET time zone 'UTC'可在我的PostgreSQL 9.1.4安装中使用。
Erwin Brandstetter,2012年

1
您正在使用哪个PostgreSQL版本?是否SET time zone 'UTC'可以在psql控制台中使用?
Mark Stosberg

我正在使用9.1.4,在哪里/如何输入SET时区“ UTC”?
Stephen Nguyen'7

1
Jupitor =#SET时区'UTC'; 错误:参数“ TimeZone”的值无效:“ UTC”
Stephen Nguyen

1
Postgres(v.9.2.4)不喜欢UTC,请改用'GMT'。
PhoebeB

Answers:


134

使用Heroku的Postgres.app时遇到了同样的问题。重新启动Mac即可解决。


2
真的很奇怪,尝试重新启动应用程序并设置时区。两者都不起作用,然后重新启动了mac和boom,没有问题。
史蒂夫·

4
通过brew重新安装postgress后,我遇到了这个问题。重新启动mac很有帮助。
maicher 2015年

1
升级修复问题后重新启动postgresql问题“ pg_ctl重新启动”
Jerzyk

4
重新启动postgres也对我有用。我的错误是错误:参数“ TimeZone”的值无效:“ America / Chicago”。只是以为我会添加此评论,因为我浪费了时间搜索此错误消息,但没有意识到它也适用于UTC
Colin D

1
老实说,我不敢相信,但这确实有效。
Ryan Sandridge

76

重新启动PostgreSQL的作品。

如果您是使用自制软件安装的,brew info postgresql则要重新启动,将告诉您:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

8
没错,这是因为PostgreSQL已升级但未重启。
弗雷德(Fred)2014年

谢谢,如果重新启动确实是唯一的答案,我会感到惊讶。
sirdharma 2015年

6
对于brew,您可以使用brew services restart postgresql或使用特定版本来更轻松地重新启动,例如brew servces restart postgresql@9.6
JiuJitsuCoder

如果我可以再次投票赞成,我会的。只是第二次遇到此错误,继续搜索,发现此链接为紫色。重新启动postgres再次为我解决了它。
金顿


15

尝试重新启动服务器。我通过Homebrew更新了Postgresql,但忘了重启服务器,并遇到了同样的问题。我认为这是由于客户端和服务器版本不匹配造成的。psql开始于:

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

8

我认为我没有任何意义,但是重新启动Postgres.app(比重新启动整个系统更好)为我解决了问题。该应用程序未显示在Dock上,您可以在窗口顶部的导航栏中找到它。希望它能有所帮助。





4

如果没有其他解决方法,而您恰巧正在使用homebrew,则可能是您当前的链接有问题。

假设您安装了两个Postgres版本,请确保取消链接,然后再次链接。就我而言,我需要两个版本都可以运行pg_upgrade。我有postgresql95postgresql所以我做到了:

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

那让我俩同时工作。希望它能对您有所帮助,因为我花了很长时间才弄清楚!


3

就我而言,重新启动数据库没有帮助。更新tzdata(apt-get install tzdata)对我有用。


2

只是重新启动数据库有所帮助。Homebrew更新了我的Postgres安装,但是我还没有重启。


2

更新时区信息后,即下载IANA数据库并使用zic进行编译后,我遇到了类似的问题。

我的问题实际上是重新启动PostgreSQL 之后开始的。我得到了,invalid value for parameter TimeZone: UTC然后重新启动并没有解决问题。

事实证明,更新后我的时区信息被完全弄乱了。我在中悬挂了符号链接/usr/share/zoneinfo。从psql控制台,我得到:

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

我删除了所有这些悬空的符号链接。完成此操作后,至少我可以开始SELECT * FROM pg_timezone_names工作了,但仍然遇到相同的invalid value...错误。

最终为我解决问题的是创建一个新的符号链接:

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

在此之后,可以SET time zone 'UTC'正常工作。


1

对于不使用Postgres.app,但从命令行或通过launchctl启动psql的用户,只是快速参考。您需要针对Postgres数据和日志文件所在的位置进行以下调整:

pg_ctl stop
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log

我正是这样做的。我习惯从Mac上的终端启动/停止postgres,它工作得很好
sebasjimenez17年

1

brew services restart postgresql没有为我解决。我确定重新启动会行得通,但我想找出问题的原因。


我认为该问题是由于的两个版本冲突而导致的postgresql

我已经postgresql运行过brew服务,然后进行安装postgresql@11postgresql即使我卸载了它也可以在brew服务中运行postgresql

我通过停止postgresqlBrew服务来解决此问题,即使该服务未在中列出brew services list


重现步骤:

$ brew install postgresql
$ brew services start postgresql

$ brew install postgresql@11
$ brew uninstall postgresql

$ brew services start postgresql@11

怎么修:

$ brew services stop postgresql

在Homebrew上打开了一个问题,要求在卸载后自动停止公式的服务。


我的问题是我已经postgresql@9.5运行,然后安装了postgresql@9.6。即使我卸载了9.5,它仍在运行。重新启动9.6不能修复它。实际的解决方法是停止9.5,然后重新启动9.6,然后此方法起作用。
西蒙·基萨内

卸载所有postgresql可能会使情况更糟。
theKid

0

显然,连接到Postgres时,Java / JDBC也会发生类似的情况。

那里的解决方案是告诉JDBC在获得连接的同时向Postgres报告正确的用户时区。

因此,在启动程序时明确提及用户时区有助于:

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

注意:

在此处添加此内容是因为这恰好是该问题在Google上与Postgres连接的第一个结果!

资源:

Yuriy在Jira支持论坛上的评论:https : //community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-Timezone-quot-quot-quote-US-Pacific/qaq-p/ 839426

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.