Postgres错误“参数值无效”TimeZone“:”UTC“”

时间:2012-07-10 08:06:25

标签: ruby-on-rails-3 postgresql

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数据库时,我一直收到此错误消息。 非常感谢帮助!

15 个答案:

答案 0 :(得分:102)

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

答案 1 :(得分:68)

重新启动postgresql。

如果您使用自制程序安装它,要重新启动,brew info postgresql会告诉您:

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

答案 2 :(得分:12)

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

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

答案 3 :(得分:8)

我不认为我应该得到任何分数,但重新启动我的Postgres.app(这比重新启动整个系统更好)解决了它。该应用程序未显示在Dock上,您可以在窗口顶部的导航栏中找到它。希望它无论如何都有帮助。

答案 4 :(得分:7)

我基于@MathiasJ's answer,而不是重新启动整个计算机,而是运行了

brew services restart postgresql@9.6

和我随后的rake db:create都很好。

答案 5 :(得分:6)

brew services restart postgresql

答案 6 :(得分:5)

我也有这个问题。

登录数据库然后发出:

set time zone utc;

答案 7 :(得分:4)

如果没有其他方法可以解决,而您恰好使用homebrew,则可能会遇到当前链接的问题。

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

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

这让我两个都在同一时间工作。希望它变得有用,因为我花了很长时间来弄明白这一点!

答案 8 :(得分:3)

实际发生的事情是您升级了postgresql服务器并清理了旧文件夹,但还没有重新启动postgresql服务器。服务器在已删除的目录中搜索时区文件

答案 9 :(得分:2)

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

答案 10 :(得分:2)

在我的情况下,重新启动数据库没有帮助。更新tzdata(apt-get install tzdata)为我做了诀窍。

答案 11 :(得分:1)

只是那些没有使用Postgres.app但是从命令行或通过launchctl启动psql的快速参考。您需要调整以下内容,以便将Postgres数据和日志文件放在以下位置:

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

答案 12 :(得分:1)

brew services restart postgresql不适用于我。我确定重新启动会行得通,但是我想找出问题的原因。


我认为此问题是由postgresql的两个相互冲突的版本引起的。

我已经让postgresql与brew服务一起运行,然后安装了postgresql@11,即使卸载了postgresql之后,postgresql仍在Brew服务中运行。

我通过停止postgresql酿造服务来解决此问题,即使该服务未在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上打开了issue,要求在卸载后自动停止公式的服务。

答案 13 :(得分: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-US-Pacific/qaq-p/839426

答案 14 :(得分:0)

更新时区信息后,我也遇到了类似的问题,即下载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'正常工作。