与DbSchema的PostgreSQL时区错误

时间:2015-11-13 09:13:57

标签: postgresql timezone synology db-schema

我想将我的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"

当我连接到我的本地数据库而不是我的NAS(Synology)数据库时,DbSchema正常工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

找到解决问题的方法:

你必须用适当的时区启动java。

在我的情况下,我的服务器是GMT,所以我不得不添加args -Duser.timezone=GMT

  • 对于DbSchema,请修改文件DbSchema.batDbSchema.sh
  • 查找SWING_JVM_ARGS
  • 的声明
  • 将参数-Duser.timezone=GMT添加到行尾
  • 使用此脚本DbSchema.batDbSchema.sh
  • 启动DbSchema

答案 1 :(得分:0)

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

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

共有87个条目全部以“Timezone”开头:

          name          | abbrev | utc_offset | is_dst
------------------------+--------+------------+--------
 Timezone/Kuwait        | AST    | 03:00:00   | f
 Timezone/Nairobi       | EAT    | 03:00:00   | f
 ...

配置的postgres timezonesets包含更多条目,因此必须有另一个postgres在启动时构建此视图的源。我发现有一个编译选项--with-system-tzdata=DIRECTORY告诉postgres从系统zoneinfo获取它的值。

我查看了/usr/share/zoneinfo,找到了一个名为Timezone的子目录,其中有87个条目。显然没有名为Europe的子目录(带有名为Berlin的时区文件)。我没有快速找到磁盘站的解决方案来自动或手动更新tzdata,方法是解压缩tzdata2016a.tar.gz并制作(make not found ...)。作为quickfix,我从另一个linux系统复制了Berlin时区文件,问题解决了,所以我现在可以使用正确的时区“Europe / Berlin”通过java / jdbc连接!