0

我想将我的 postgreSQL 服务器设置为'Europe/Berlin'但出现错误:

SET time zone 'Europe/Berlin';
ERROR:  invalid value for parameter "TimeZone": "Europe/Berlin"

但真正的问题是 DdbSchema,当我想连接到我的数据库时,我遇到了错误

FATAL: invalid value for parameter "TimeZone": "Europe/Berlin"

DbSchema 在我连接到本地数据库时有效,但在我的 NAS (Synology) 数据库中无效。

任何想法 ?

4

2 回答 2

0

找到了解决问题的方法:

您必须使用正确的时区启动 java。

就我而言,我的服务器是 GMT,所以我必须添加 args-Duser.timezone=GMT

  • 对于 DbSchema,编辑文件DbSchema.batDbSchema.sh
  • 找到声明SWING_JVM_ARGS
  • -Duser.timezone=GMT在行尾添加参数
  • 使用此脚本启动 DbSchemaDbSchema.batDbSchema.sh
于 2015-11-17T14:34:03.737 回答
0

我认为您的解决方案只是解决有关 synology diskstation 上 zoneinfo 的实际问题的解决方法。

尝试连接到我的 diskstation 上的 postgres 数据库时,我遇到了完全相同的错误。该查询select * from pg_timezone_names;为您提供了 postgresql 知道的所有时区名称。

有 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 获取它的值。

我查看/usr/share/zoneinfo并找到一个子目录,其中Timezone包含 87 个条目。而且显然没有调用子目录Europe(带有一个名为 的时区文件Berlin)。我没有很快找到一个解决方案,让 diskstation通过解包和制作 ( ...)来tzdata自动或手动更新磁盘站。作为快速修复,我从另一个 linux 系统复制了时区文件,问题得到了解决,因此我现在可以使用正确的时区“欧洲/柏林”通过 java/jdbc 进行连接!tzdata2016a.tar.gzmake not foundBerlin

于 2016-02-08T23:52:41.730 回答