我们有一个运行PostgreSQL 8.3的非常老的Linux系统。该系统包含一个具有Postgis功能的数据库,但是,从pgAdmin III接口来看,似乎没有启用“扩展”。那台服务器机器将要过时,我们想移到另一台Postgres服务器。
目前我们有一个Windows服务器Postgres 9.3。我已经能够创建一个自定义的.backup文件,并且能够使用per:http://trac.osgeo.org/postgis/wiki/UsersWikiWinUpgrade方法导入大多数表和数据,但是我的error.txt文件显示:

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

我认为这个函数是liblwgeom.dll的一部分,我在任何地方都找不到那个DLL文件!我已经从:http://download.osgeo.org/postgis/windows/下载了大部分zip文件,但运气不佳。
原始数据库的“makepoint”函数如下所示,但由于缺少DLL,它在目标Windows系统上不起作用。
我有什么选择?
也许需要另一种方法。请注意,根据http://www.postgis.org/documentation/manual-svn/postgis_installation.html#hard_upgrade我也尝试过在Linux环境中使用.backup文件进行“硬升级”,但出现了一些错误,如“无效头”,可能是因为pg restore工具太新;在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建议无效。不过还是谢谢。

最佳答案

在PostGIS 1.2.3中,函数被重命名为前缀ST_,因此makepoint(float8, float8)的现代名称是st_makepoint(float8, float8)
您可以将使用它们的函数重命名为现代命名方案,但如果您有各种函数、触发器函数等,则很难这样做。
您还可以运行PostGIS安装时附带的legacy.sql启用程序脚本,该脚本将重新启用旧功能,如makepoint(float8, float8)和许多其他功能。

关于postgresql - 使用Postgis对象迁移旧的PostgreSQL数据库时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29614512/

10-15 11:08