如何在具有较新版本的系统上从旧版本的PostGIS恢复数据库转储?

时间:2016-08-15 14:22:12

标签: postgresql postgis

我从PostgreSQL 9.1 + PostGIS 1.5.3获得了PostGIS数据库的数据库转储,我试图在PostgreSQL 9.5 + PostGIS 2.2.1的系统上恢复。

创建新数据库后,我使用以下命令将其转换为PostGIS数据库:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

但是,在恢复到这个新数据库时,我得到以下错误(在许多其他数据库中):

ERROR:  function ndims(geometry) does not exist
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

我有什么办法可以导入旧的数据库转储吗?

1 个答案:

答案 0 :(得分:1)

PostGIS似乎与某些脚本捆绑在一起,以帮助从早期版本的数据库转储中恢复。因此,在创建PostGIS表和函数后使用:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

你可以这样做:

psql mydatabase < /usr/share/postgresql/9.5/contrib/postgis-2.2/legacy_minimal.sql

然后数据库恢复在没有ndims错误的情况下工作 - 对于已经定义的函数等存在许多其他错误,但这些错误似乎是可以忽略的。