2014-09-25 33 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