DbSchema 的 PostgreSQL 时区错误
PostgreSQL timezone error with DbSchema
我想将我的 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) 数据库中无效。
有什么想法吗?
找到解决问题的方法:
您必须以正确的时区开始 java。
在我的例子中,我的服务器是 GMT,所以我必须添加参数 -Duser.timezone=GMT
- 对于 DbSchema,编辑文件
DbSchema.bat
或 DbSchema.sh
- 找到
SWING_JVM_ARGS
的声明
- 在行尾添加参数
-Duser.timezone=GMT
- 使用此脚本启动 DbSchema
DbSchema.bat
或 DbSchema.sh
我认为您的解决方案只是解决与 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 从系统区域信息中获取它的值。
我查看了 /usr/share/zoneinfo
并找到了一个名为 Timezone
的子目录,其中正好有 87 个条目。显然没有名为 Europe
的子目录(带有名为 Berlin
的时区文件)。我没有很快找到解决方案,让 diskstation 自动或通过解包 tzdata2016a.tar.gz
并制作 (make not found
...) 手动更新 tzdata
。作为快速修复,我从另一个 linux 系统复制了 Berlin
时区文件,问题得到解决,这样我现在可以使用正确的时区 "Europe/Berlin" 通过 java/jdbc 连接!
我想将我的 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) 数据库中无效。
有什么想法吗?
找到解决问题的方法:
您必须以正确的时区开始 java。
在我的例子中,我的服务器是 GMT,所以我必须添加参数 -Duser.timezone=GMT
- 对于 DbSchema,编辑文件
DbSchema.bat
或DbSchema.sh
- 找到
SWING_JVM_ARGS
的声明
- 在行尾添加参数
-Duser.timezone=GMT
- 使用此脚本启动 DbSchema
DbSchema.bat
或DbSchema.sh
我认为您的解决方案只是解决与 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 从系统区域信息中获取它的值。
我查看了 /usr/share/zoneinfo
并找到了一个名为 Timezone
的子目录,其中正好有 87 个条目。显然没有名为 Europe
的子目录(带有名为 Berlin
的时区文件)。我没有很快找到解决方案,让 diskstation 自动或通过解包 tzdata2016a.tar.gz
并制作 (make not found
...) 手动更新 tzdata
。作为快速修复,我从另一个 linux 系统复制了 Berlin
时区文件,问题得到解决,这样我现在可以使用正确的时区 "Europe/Berlin" 通过 java/jdbc 连接!