在 PostgreSQL 9.5/PostGIS2.2 中設置全域設置的問題
我正在嘗試
postgis.gdal_enabled_drivers
從PostGIS
擴展中設置全域設置/GUC 變數一段時間。我是非管理員使用者,但如果需要,可以要求管理員更改設置。但是我按照說明嘗試了幾種不同的方法,但都沒有奏效。
- 我嘗試了舊的方式來改變環境變數。我添加了以下內容
/etc/environment
:POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
所以
echo $POSTGIS_GDAL_ENABLED_DRIVERS
返回ENABLE_ALL
現在,在我的非管理員 PostreSQL 帳戶中,
SELECT short_name, long_name FROM ST_GdalDrivers();
返回
0 rows
,表示沒有啟用任何 GDAL 驅動程序。
- 我還嘗試讓 postgres :
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
但我得到一個錯誤:
ERROR: unrecognized configuration parameter "postgis.gdal_enabled_drivers"
- 我試過了:
ALTER DATABASE my_db SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
但我得到了:
ERROR: permission denied to set parameter "postgis.gdal_enabled_drivers"
總之,我可以像方法 1 和 2 一樣要求管理員更改一些設置,但不是每次都更改,例如當我執行完整的數據庫還原(方法 3)時。
我的問題是:
我怎樣才能使上述方法起作用?
僅供參考,我的 PostgreSQL 版本是 9.5.1,作業系統是 Lubuntu 16.04 beta
postgis_version --------------------------------------- 2.2 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
在方法 3 中,我可以使用
postgres
toALTER DATABASE
但我不能要求 amin 每次恢復 db 時都這樣做,我會在其中執行以下操作:dropdb my_db && createdb -T template my_db $$ psql < my_pg_dump_file
編輯
/etc/postgresql/9.x/main/environment
文件並設置以下環境變數POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
POSTGIS_ENABLE_OUTDB_RASTERS=1
。然後重啟伺服器。
首先調試,這樣做。
SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';
SELECT * FROM ST_GdalDrivers();
如果這沒有返回任何內容,那麼您將遇到更大的問題。您是從 Ubuntu/LUbuntu 儲存庫安裝的嗎?或者,你自己建造的?
ALTER SYSTEM
是使用偽 sql 命令更改配置文件的新方法。如果你看到這個錯誤:無法辨識的配置參數“postgis.gdal_enabled_drivers”
這意味著您的
postgresql.conf
. (也許它被註釋掉了。)但是你仍然可以手動將它添加到 conf 文件中。在 PostGIS 環境中設置啟用的 GDAL 驅動程序的配置選項。影響 GDAL 配置變數 GDAL_SKIP。**這個選項可以在 PostgreSQL 的配置文件中設置:postgresql.conf。**也可以通過連接或事務來設置。
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'GTiff PNG JPEG';
或任何你想要的。我不會設置環境。相反,只需將其放入您的
/etc/postgresql/9.5/main/postgresql.conf
postgis.gdal_enabled_drivers = 'ENABLE_ALL';
這與文件所說的基本相同,
SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';