操作方法

如果数据库包含地理数据库,如何升级到 PostgreSQL 12.x

Last Published: August 13, 2020

摘要

PostgreSQL 12 和更高版本的一个显著变化是移除了内部 OID 列的特殊行为。 如 PostgreSQL 版本 12 注释 中所述,不能再使用 WITH OIDS 子句创建表。 在 PostgreSQL 12 之前,PostgreSQL 中的某些地理数据库系统表是使用 WITH OIDS 子句所创建。 有关使用 PostgreSQL 12.x 实例时如何升级地理数据库的信息,请参阅解决方案部分。

在使用 ArcGIS 时,请注意与此更改相关的以下几点:

  • 在 PostgreSQL 12 和更高版本中使用 ArcGIS 客户端和地理数据库:
    PostgreSQL 12 和更高版本中存储的地理数据库数据不支持早于 10.8.1 的 ArcGIS 版本和 ArcGIS Pro 2.6。 这些 ArcGIS 客户端版本尝试使用 WITH OIDS 子句创建某些地理数据库表。 早期客户端未能在 PostgreSQL 12.x 中的 ArcGIS 10.8.1 和/或ArcGIS Pro 2.6 地理数据库中创建表的错误示例如下:
无法创建要素类。 找不到 DBMS 表 [ERROR:关系 map.i48 不存在]

使用较早版本的客户端在 PostgreSQL 12 或更高版本中的地理数据库中编辑数据时,某些编辑操作也会失败。

  • 使用 pg_upgrade 升级到 PostgreSQL 12:
    如果您的数据库包含地理数据库,则不支持使用 pg_upgrade 升级到 PostgreSQL 12 及更高版本。 pg_upgrade 实用程序将检测使用 WITH OIDS 子句创建的表是否存在,并建议对这些表执行 (ALTER TABLE) 操作。 由于不支持对地理数据库系统表进行手动 SQL 更改,因此在升级地理数据库并将 PostgreSQL 数据库升级到版本 12 或更高版本时,请使用下面解决方案部分中描述的方法。

过程

使用 pg_dump/pg_restore 升级到 PostgreSQL 12
创建 PostgreSQL 数据库的备份有多个选项可供使用。 但是,对于用于存储地理数据库的 PostgreSQL 数据库,Esri 建议您使用 pg_dump 创建归档文件、删除数据库、使用相同名称重新创建数据库并使用 pg_restore 恢复到重新创建的数据库。 可以在升级地理数据库到 ArcGIS 版本 10.8.1 或 ArcGIS Pro 2.6 之前或之后使用此备份和还原方法。 如果数据库是 ArcGIS Pro 2.6 或 ArcGIS 10.8.1 的受支持版本,则可以直接从 10.6.x、10.7.x 或 10.8 地理数据库升级。

文章 ID: 000023982

接收通知并查找新问题或常见问题的解决方案

从我们全新的 AI 聊天机器人中获得简明答案和视频解决方案。

下载 Esri 支持应用程序

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项