![](/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.