「postgis.backend」已設定的原因
「postgis.backend」已設定
的錯誤偶爾會出現在 PostGIS 郵件列表中。此問題通常會在升級期間或升級後發生。
問題會像這樣出現
從 2.1 升級至 PostGIS 2.3 後,我的伺服器記錄檔充滿了這些訊息:警告「postgis.backend」已設定,且無法變更直到您重新連線
如果您安裝了 legacy.sql
檔案,特別是在 PostGIS 第 3 版或更新版本發行之前,舊的傳統函數可能仍指向舊 PostGIS 函式庫的位置。
解決此問題的方法,是執行舊的 legacy_uninstall.sql
,然後重新安裝新的 legacy.sql
檔案。
legacy.sql
腳本通常位於 PostgreSQL share\contrib\postgis
目錄中。例如,使用 9.4 PostgreSQL 和 2.1 PostGIS
# Remove the old functions
psql -d your_db -f /usr/share/postgresql/9.4/contrib/postgis-2.1/uninstall_legacy.sql
# If you want still need legacy functions
psql -d your_db -f /usr/share/postgresql/9.4/contrib/postgis-3.2/legacy.sql
一般而言,您可能不想要使用傳統函數,因此移除傳統函數後,請檢查並確定所有應用程式都能正常執行,您可能不需要再次安裝它們。
如果您安裝的 postgis_sfcgal
版本具有擴充功能。這可能是 PostGIS 2.2 或更高版本,您可以執行以下操作
ALTER EXTENSION postgis_sfcgal UPDATE;
如果您有多個版本的 PostGIS 而不想安裝最後一個版本,您可以執行此操作。確定此版本與您的 PostGIS 版本相符,因為這兩個擴充功能都使用同一個 PostGIS 函式庫。
ALTER EXTENSION postgis_sfcgal UPDATE TO "2.3.2";
可能原因 3:舊的 postgis_sfcgal 殘留
您執行的是過期的微型版本。
在我們首次於 PostGIS 中導入 GUC 時,升級期間會有一個錯誤,當在次要版本之間切換時會觸發。此問題早已修正,因此請確定您已為次要微型版本安裝最新的微型版本,然後執行下列動作。
ALTER EXTENSION postgis UPDATE;
可能原因 4:混合手動和擴充功能安裝
也許您做了一些不正統的事情並設法安裝了一個沒有擴充功能的舊版 PostGIS 跟一個具有擴充功能的新版。或者系統可能有某些功能是由不完整的升級或安裝殘留下來的。
因此,要修復,您必須找出這些功能並更新它們。下列是一個查詢,用於找出您已安裝多少個 PostGIS 函式庫版本以及您有多少個每個功能
SELECT probin, count(*)
FROM pg_catalog.pg_proc
WHERE probin LIKE '%/postgis%'
GROUP BY probin
ORDER BY probin;
在正常的安裝中,您應該只看到一行內容,如下所示。您的版本號碼和計數可能有所不同。
| probin | count |
|---------------------|-------|
|$libdir/postgis-2.4 | 446 |
如果您有多於一列,則表示您的函式庫版本是混合的
| probin | count
---------------------+-------
$libdir/postgis-2.4 | 446
$libdir/postgis-2.1 | 4
執行此查詢,以使用所列最新版本取代 postgis-2.1
。
UPDATE pg_catalog
SET pg_proc = '$libdir/postgis-2.4'
WHERE probin LIKE '%/postgis-2.1%';