PostgreSQL failed IANA tz database BUG修复
背景
PostgreSQL 可以使用IANA發布的時區數據庫,但是由于IANA發布的數據庫中,有些定義的時區別名并沒有對應的時區。
從而導致PG在解析對應別名時會報錯。
# select '2016-09-02 08:00:00 NOVST'::timestamptz; ERROR: time zone abbreviation "novst" is not used in time zone "Asia/Novosibirsk"查詢pg_timezone_abbrevs函數返回所有的別名與時區對應關系,也會報錯。
postgres=# select pg_timezone_abbrevs (); ERROR: time zone abbreviation "novst" is not used in time zone "Asia/Novosibirsk"修復BUG
在PostgreSQL的BUG報告中已經有在討論這個問題
https://www.postgresql.org/message-id/flat/20160902031551.15674.67337%40wrigleys.postgresql.org#20160902031551.15674.67337@wrigleys.postgresql.org
https://www.postgresql.org/message-id/flat/6189.1472820913%40sss.pgh.pa.us#6189.1472820913@sss.pgh.pa.us
TOM LANE提供了一個patch,可以避免出現以上問題。
wget https://www.postgresql.org/message-id/attachment/45970/allow-timezone-abbrevs-not-matching-iana-data.patch cd postgresql-9.5.4 patch -p1 < ../allow-timezone-abbrevs-not-matching-iana-data.patch make -j 32 make install重啟數據庫,測試,如果時區別名不存在時區映射關系時,使用了本地時區。
postgres=# select '2016-09-02 08:00:00 NOVST'::timestamptz;timestamptz ------------------------2016-09-02 09:00:00+08 (1 row)長期來看,等PG的內核修復。
參考
https://www.postgresql.org/message-id/flat/20160902031551.15674.67337%40wrigleys.postgresql.org#20160902031551.15674.67337@wrigleys.postgresql.org
https://www.postgresql.org/message-id/flat/6189.1472820913%40sss.pgh.pa.us#6189.1472820913@sss.pgh.pa.us
Count
總結
以上是生活随笔為你收集整理的PostgreSQL failed IANA tz database BUG修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMvc 集成 shiro 实
- 下一篇: 如何杀掉D状态的进程?[zt]【转】