2014-09-25 60 views
1

我有一个处理时区的应用程序,所以自然我希望能够查看Postgresql中的时区列表。Postgresql:错误:时区目录堆栈溢出

我想查看所有可用时区使用以下命令:

SELECT * FROM pg_timezone_names; 

它打印以下错误:

ERROR: timezone directory stack overflow 

我甚至尝试限制的结果,并收到了同样的错误:

SELECT * FROM pg_timezone_names LIMIT 10; 

起初我以为它可能只是我有选择的IDE有问题,但我试图在命令行上运行相同的SQL查询并收到相同的错误。在我的生活中,我无法找到这个问题的答案。任何信息都有帮助。谢谢!

编辑:我在Gentoo上使用Postgresql 9.3。 postgresql-server的自编译版本。

注:我可以查询pg_timezone_abbrevs表就好了,只是不是pg_timezone_names。

+0

Postgres您使用的是哪个版本?什么OS?你使用二进制发行版,还是自己编译它?如果是这样,你是否使用了'--with-system-tzdata'标志[在本页描述](http://www.postgresql.org/docs/9.3/static/install-procedure.html)? – 2014-09-25 23:01:22

+0

@MattJohnson我更新了我的问题以包含该信息。在portage中,Gentoo的软件包管理器没有--with-system-tzdata标志,所以我认为它是嵌入式的。我可以很好地查询pg_timezone_abbrevs,而不是名称表。 – DerekE 2014-09-25 23:17:33

+0

我浏览了ebuild for postgresql-server,看起来--with-system-tzdata实际上是内置的。http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-db /postgresql-server/postgresql-server-9.3.4.ebuild?view=markup – DerekE 2014-09-25 23:32:29

回答

0

这是我自己问题的答案。

以下是至少在Linux的Gentoo发行版真的,但我认为可以出现在其他人。

什么原因导致我的帖子中提到的错误是在/ usr /股符号链接循环/ zoneinfo区/ POSIX

要解决这个错误,你只需要删除符号链接,如下所示:

rm /usr/share/zoneinfo/posix 

很容易修复。请注意,对zoneinfo的任何更新都会导致此符号链接被重新创建,因此需要您再次将其删除。我没有任何关于这个链接被删除的问题,但我不能说其他人也一样。如果任何人有一个不是的理由删除此符号链接,只需发表评论说明如此。

1

根据this Postgres FAQ

... On platforms that receive regular software updates including new tzdata files, it may be more convenient to rely on the system's copy of the tzdata files. This is possible as a compile-time option. Most Linux distributions choose this approach for their pre-built versions of PostgreSQL. ...

编译时选项称为是--with-system-tzdata,其大约中途向下this page说明。

我的猜测是这个标志是由您使用的Portage发行版设置的,并且tzdata在您的系统上丢失或损坏。在Gentoo上,tzdata分布在timezone-data包中,您可以在其中找到here

尝试:

# emerge timezone-data 

然后看看是否能解决这个问题。

+0

我确实已经在我的系统上安装了该软件包,但无论如何,我确实再次出现并仍然收到相同的问题。我将尝试编译Postgresql,看看是否有帮助。无论如何感谢您的答案,我相信这会帮助某人。 – DerekE 2014-09-26 00:03:46

+0

对不起 - 这是我最好的猜测。我希望它能指引你朝着正确的方向前进。我确实看到了一些'emerge --config timezone-data'的例子,但我不确定区别。 – 2014-09-26 00:05:48

+0

emerge --config timezone-data实际上在安装后配置软件包。我也尝试过,没有运气。希望我能弄明白.. – DerekE 2014-09-26 01:24:25

1

在Ubuntu 14.04 LTS和PostgreSQL 9.3.3上有完全相同的问题,但是我的递归符号链接是用/ usr/share/zoneinfo/localtime。通过运行修复:

$ sudo unlink/usr/share/zoneinfo/localtime