2009-08-28 51 views
11

簡而言之,我的問題是「爲什麼$ libdir不能用於我的PSQL安裝。」

CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d 
    AS '$libdir/liblwgeom', 'BOX2DFLOAT4_in' 
    LANGUAGE c IMMUTABLE STRICT; 

產生錯誤

could not access file "$libdir/liblwgeom": No such file or directory 

CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d 
    AS '/usr/local/pgsql/lib/liblwgeom', 'BOX2DFLOAT4_in' 
    LANGUAGE c IMMUTABLE STRICT; 

正常工作。

% pg_config --pkglibdir 
/usr/local/pgsql/lib 

輸出看起來是正確的。

+0

這應該工作。也許你在混合不同的裝置? – 2009-09-14 10:42:27

回答

1

編輯了原來的答覆爲它是錯誤

現在,我已經擡頭PostgreSQL的代碼,我不得不承認,這個字符串應該是自2001年以來;-)進行擴展。雖然擴張非常有限。它只擴展$libdir,後跟目錄分隔符。不過,您的輸出表明該字符串未擴展,因爲此處報告的字符串是實際用於加載庫的字符串。

這意味着替換失敗。仔細觀察它,我可以看到,如果目標文件實際存在,擴展才會成功。假設你的目錄分隔符是/DLSUFFIX.so和文件/usr/local/pgsql/lib/liblwgeom.so確實存在,我沒有線索微弱憑啥;-)

+0

你爲什麼這麼說?這似乎是完全標準的用法。 – 2009-09-15 11:01:56

+0

喬,你的問題讓我吃驚,我改變了答案;-) – 2009-09-15 11:54:35

6

我這個錯誤掙扎和失敗。我解決它通過在PostGIS的LIB手動鏈接到liblwgeom文件,像這樣:

ln -s /usr/lib/postgis/1.5.1/postgres/8.4/lib/postgis-1.5.so 
    /usr/lib/postgresql/8.4/lib/liblwgeom 

我不知道爲什麼PostGIS的安裝自己的「錯誤」的目錄,或者爲什麼PostgreSQL的查找文件名爲liblwgeom時它似乎是PostGIS調用的相同文件postgis-1.5.so

我所知道的是,這似乎解決了我的問題。

+0

很好地完成了,我做了'ln -s /Library/PostgreSQL/9.1/lib/postgis-1.5.so /Library/PostgreSQL/9.1/ lib/postgresql/postgis-1.5'用於我的安裝 – 2012-10-20 03:56:04