Postgis

在 PostgreSQL 9.5/PostGIS2.2 中設置全域設置的問題

  • November 26, 2016

我正在嘗試postgis.gdal_enabled_driversPostGIS擴展中設置全域設置/GUC 變數一段時間。我是非管理員使用者,但如果需要,可以要求管理員更改設置。但是我按照說明嘗試了幾種不同的方法,但都沒有奏效。

  1. 我嘗試了舊的方式來改變環境變數。我添加了以下內容/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 驅動程序。

  1. 我還嘗試讓 postgres :
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';

但我得到一個錯誤:

ERROR:  unrecognized configuration parameter "postgis.gdal_enabled_drivers"
  1. 我試過了:
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 中,我可以使用postgrestoALTER 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。然後重啟伺服器。

首先調試,這樣做。

  1. SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';
  2. 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';

引用自:https://dba.stackexchange.com/questions/133854