![](/img/trans.png)
[英]Django 1.5.4 syncdb not creating some fields in PostgreSQL 9.1/PostGIS 2 tables
[英]function makepoint postgresql 9.1 error postgis
将Postgres 8.4迁移到9.1并将项目移到新服务器上时出现此错误
错误:函数makepoint(未知,未知)不存在第4行:distance_sphere(makepoint('14 .2995419','41.0310868'),mak ... ^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
谷歌搜索,我发现这可能是postgis的问题...然后我遵循了该指南http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1204src ,我将所有内容都安装在服务器上...
什么都行不通...而且我有变得发疯的危险...有人知道如何修复它!
如前所述,这些函数以前称为“ makepoint”和“ distance_sphere”,但后来用“ ST_”前缀重命名(ST =“空间类型”)。
一个非常简单的解决方案是使用以下方法将legacy.sql
函数添加到template_postgis
(如果使用)或目标数据库中:
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/legacy.sql
从错误看来,您似乎将要点括在引号中,因此抱怨未知,未知。 ST_Makepoint将期望使用两个双精度数字作为输入。 如注释中所述,您还应在所有空间函数之前加上ST_。
如果从psql提示符下运行以下命令:
\df ST_MakePoint
您将看到支持2、3和4尺寸的3个版本,所有版本均加倍。
例如:
select st_distance_sphere(st_makepoint(14.2995419,41.0310868), st_makepoint(15.2995419,40.0310868)) as dist;
返回139665.10 m
对于有价值的产品,ST_被认为是符合标准的。 Oracle在其所有空间函数之前都使用ST_,Postgres / Postgis也是如此,MySQL支持ST_和直接函数名,并且Microsoft决定在SQL Server 2008中实现空间sql时完全删除下划线,因此您拥有STUnion。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.