我从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.
我有什么办法可以导入旧的数据库转储吗?
答案 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
错误的情况下工作 - 对于已经定义的函数等存在许多其他错误,但这些错误似乎是可以忽略的。