あなたの解決策は、Synology diskstation の zoneinfo に関する実際の問題の回避策にすぎないと思います。
ディスクステーションの postgres データベースに接続しようとすると、まったく同じエラーが発生しました。このクエリselect * from pg_timezone_names;
は、postgresql が認識するすべてのタイムゾーン名を提供します。
"Timezone" で始まる 87 のエントリがあります。
name | abbrev | utc_offset | is_dst
------------------------+--------+------------+--------
Timezone/Kuwait | AST | 03:00:00 | f
Timezone/Nairobi | EAT | 03:00:00 | f
...
構成された postgrestimezonesets
にはさらに多くのエントリが含まれているため、postgres が起動時にこのビューを構築している別のソースが必要です。--with-system-tzdata=DIRECTORY
postgres にシステム zoneinfo から値を取得するように指示するコンパイル オプションがあることを発見しました。
調べたところ、正確に 87 エントリで/usr/share/zoneinfo
呼び出された 1 つのサブディレクトリが見つかりました。Timezone
そして、明らかに、という名前のサブディレクトリはありませんでしEurope
た (という名前のタイムゾーン ファイルを使用Berlin
)。tzdata
解凍して作成することにより、ディスクステーションが自動または手動で更新するための解決策をすぐに見つけられませんでしたtzdata2016a.tar.gz
(make not found
...)。クイックフィックスとして、別の Linux システムからタイムゾーン ファイルをコピーしたところBerlin
、問題が解決したので、正しいタイムゾーン "Europe/Berlin" を使用して Java/jdbc 経由で接続できるようになりました。