使用Postgis对象迁移旧Postgre SQL数据库时出错

时间:2015-04-13 20:30:34

标签: postgresql migration postgis

我们有一个非常老的Linux系统运行Postgre sql 8.3。系统包含一个带有Postgis功能的数据库,但是,从pgAdmin III界面看,似乎没有启用“Extensions”。该服务器机器将过时,我们想转移到另一个Postgre sql服务器。

目前我们有一台Windows服务器Postgre SQL 9.3。我已经能够创建一个自定义.backup文件,并且能够使用以下方法导入大多数表和数据:http://trac.osgeo.org/postgis/wiki/UsersWikiWinUpgrade但是我的error.txt文件说:

function makepoint(double precision, double precision) does not exist

我认为这个函数是liblwgeom.dll的一部分,我无法在任何地方找到DLL文件!我已经完成了大部分的zip下载:http://download.osgeo.org/postgis/windows/但没有运气。

原始数据库确实具有'makepoint'功能,但由于缺少DLL,它在目标Windows系统上不起作用。

我有什么选择?

可能需要采用不同的方法。请注意,根据http://www.postgis.org/documentation/manual-svn/postgis_installation.html#hard_upgrade我在Linux环境中使用.backup文件尝试了'硬升级'但是出现了一些错误,例如'无效标题',可能是由于pg恢复工具太新了;在Linux中,我的进步远远低于Windows中的进展。

CREATE OR REPLACE FUNCTION makepoint(double precision, double precision)
RETURNS geometry AS '$libdir/liblwgeom', 'LWGEOM_makepoint'
LANGUAGE c IMMUTABLE STRICT COST 1; ALTER FUNCTION makepoint(double   precision, double precision)  OWNER TO postgres;

编辑 这是一个Windows系统,因此建议的Mac OS建议无效。谢谢。

1 个答案:

答案 0 :(得分:2)

回到PostGIS 1.2.3,功能使用ST_前缀重命名,因此现代名称makepoint(float8, float8)st_makepoint(float8, float8)

您可以将使用它们的函数重命名为现代命名方案,但如果您有各种函数,触发函数等,这可能很难做到。

您还可以运行安装PostGIS时附带的legacy.sql启用程序脚本,该脚本将重新启用旧功能,例如makepoint(float8, float8)和其他许多功能。