修復已損毀的 postgis raster 安裝
PostGIS 3.0 起,PostGIS raster 支援不再是 postgis
延伸套件的一部份,而是成為一個名為 postgis_raster
的 PostGIS 延伸套件。
從 2.* 升級 raster 至 3.*說明如何正確地從 PostGIS 2+ 升級到 PostGIS 3+。
不幸的是,當許多人在檢查
SELECT postgis_full_extension()
時看到「UNPACKAGED」的提示訊息,便驚慌失措地嘗試以串接的方式刪除 raster 類型。刪除 raster 類型並不會移除所有 raster 功能,但會毀損您所有的 raster 資料(如果您有)。不要這樣做。但如果您已經這樣做了,這個解決方案是適合您的。
損壞 raster 安裝後,唯一的解決方案是移除 postgis raster 功能的剩餘部分。在那時,您可以使用 CREATE EXENSION postgis_raster
重新安裝,或者如果您不需要 raster 支援,則不需理會。
您怎麼知道您的 raster 安裝已損毀?
如果您執行
ALTER EXTENSION postgis UPDATE;
-- yes run it twice
SELECT postgis_extensions_upgrade();
SELECT postgis_extensions_upgrade();
然後檢查
SELECT postgis_full_version();
而且仍看到訊息 RASTER (raster lib from "2.5.3 r17699" need upgrade) [UNPACKAGED!]
表示您的 raster 功能損毀嚴重,無法升級。
在進行任何操作之前,請先確認您沒有任何 raster 表格。以下查詢應會產生錯誤或傳回 0
SELECT count(1) FROM raster_columns;
若要解決此問題,請執行腳本 uninstall_rtpostgis.sql。它應該移除較早版本 PostGIS 柵格函數,因為較早版本的函數組通常是 2.5 的子集。
現在再次執行以下內容以確認所有問題都已清除。
SELECT postgis_full_version();
現在你應該看不到任何提到 RASTER 或 GDAL 的內容。