2016-02-04 51 views
6

我試圖在運行PostGIS的GIS Django應用程序上運行測試作爲數據庫後端。使用Postgis後端測試Django應用程序

當我嘗試運行測試,我得到以下錯誤:

django.db.utils.ProgrammingError: permission denied to create extension "postgis" 
HINT: Must be superuser to create this extension. 

錯誤是有道理的。只有管​​理員數據庫用戶才能安裝擴展,因爲此權限允許執行任意外部代碼。但是由於每次測試運行時測試運行器都需要重新創建數據庫,因此Django的數據庫用戶無法繼續。

這是我的數據庫配置。

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'my_db', 
     'USER': 'my_user', 
     'PASSWORD': 'my_crazy_secure_password', 
     'HOST': '127.0.0.1', 
     'PORT': '', 
     'TEST_NAME': 'test_my_db', 
    }, 
} 

回答

9

一旦我找到答案,我的解決方案就非常簡單了。

連接到template1數據庫,並運行CREATE EXTENSION IF NOT EXISTS postgis;。在創建新數據庫時,將複製template1數據庫,因此所有新數據庫將已安裝擴展。

+0

工作就像一個魅力。你是國王。 – bbrame

+2

運行:'sudo -u postgres psql -d template1 -c「CREATE EXTENSION IF NOT EXISTS postgis;」' –

相關問題