PostgreSQL时区与系统时区不匹配
我有几个PostgreSQL 9.2安装,其中PostgreSQL使用的时区是GMT,尽管整个系统是“欧洲/维也纳”.我仔细检查了
postgresql.conf不包含时区设置,因此根据文档它应该回退到系统的时区.
然而, # su -s /bin/bash postgres -c "psql mydb" mydb=# show timezone; TimeZone ---------- GMT (1 row) mydb=# select now(); now ------------------------------- 2013-11-12 08:14:21.697622+00 (1 row) 任何提示,GMT时区可能来自哪里?系统用户没有设置TZ,并且似乎正确配置了/ etc / timezone和/ etc / timeinfo. # cat /etc/timezone Europe/Vienna # date Tue Nov 12 09:15:42 CET 2013 任何提示都表示赞赏,提前谢谢!
TimeZone设置的默认值在9.2版中已更改:
> 9.1
> 9.2
这意味着在版本9.2之前,应该在initdb阶段设置postgresql.conf的默认值.如果你重写了这个值(可能在从旧版本升级时复制旧的postgresql.conf),PostgreSQL将使用“GMT”值作为默认值. 您的案例的解决方案非常简单,只需将postgresql.conf上的TimeZone设置更改为您想要的值: TimeZone = 'Europe/Vienna' 之后,您需要重新加载服务: # su - postgres -c "psql mydb -c 'SELECT pg_reload_conf()'" 然后,从现在开始,所有存储为带时区(或时间戳)的时间戳的字段都将正确显示.但是你必须手动纠正所有(更新)存储为没有时区(或时间戳)的时间戳的字段. 我给每个人升级PostgreSQL的一个提示是不要将旧的postgresql.conf复制到新的集群(请注意,我不确定它是不是你做了什么,但我因此而看到了同样的问题).只需获取initdb生成的那个并添加修改(diff工具可能很少用于此任务). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |