错误:参数" TimeZone":"加拿大/东萨斯喀彻温省"

时间:2017-12-03 13:28:27

标签: database postgresql timezone database-restore

我导入了一个使用psql(PostgreSQL)9.5.10的数据库。对于我的本地数据库v.9.6.5。

这是有问题的部分:

COPY timezone (id, name, windowsname, tzindex) FROM stdin;
...
315     Canada/East-Saskatchewan        \N      \N
...

这是我得到的错误:

pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 9024; 0 48454 TABLE DATA timezone skysms pg_restore: [archiver (db)] COPY failed for table "timezone": ERROR: invalid value for parameter "TimeZone": "Canada/East-Saskatchewan" CONTEXT: SQL statement "SET local timezone to 'Canada/East-Saskatchewan'" PL/pgSQL function display_in_other_tz(timestamp with time zone,text,text) line 7 at EXECUTE statement COPY timezone, line 315: "315 Canada/East-Saskatchewan \N \N"

1 个答案:

答案 0 :(得分:7)

区域year曾经是有效的时区标识符。它是[[时区的链接/别名。但是,它在上一个版本(2017c)中从tz数据库删除。您可以看到提交here

The 2017c release announcement州:

  

从后退'移除加拿大/东萨斯喀彻温省。文件,因为它超过了14个字符的限制,无论如何都是一个未使用的用词。

因此,虽然通常时区标识符没有以这种方式删除,但对于这个特定的时区,由于其长度,它被认为是必要的。

您可以安全地将Canada/East-Saskatchewan的任何条目更新为区域的首选基于地点的形式:America/Regina