我想将我的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正常工作。
有什么想法吗?
答案 0 :(得分:0)
找到解决问题的方法:
你必须用适当的时区启动java。
在我的情况下,我的服务器是GMT,所以我不得不添加args -Duser.timezone=GMT
DbSchema.bat
或DbSchema.sh
SWING_JVM_ARGS
-Duser.timezone=GMT
添加到行尾DbSchema.bat
或DbSchema.sh
答案 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连接!