2016-02-04 61 views
6

Próbuję uruchomić testy na aplikacji GIS Django z uruchomionym PostGIS jako zapleczem bazy danych.Testowanie aplikacji Django za pomocą Postgis Backend

Gdy próbuję uruchomić testy, pojawia się następujący błąd:

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

Błąd sens. Tylko administratorzy bazy danych mogą instalować rozszerzenia, ponieważ ten przywilej pozwala na wykonanie dowolnego kodu zewnętrznego. ALE ponieważ tester musi ponownie utworzyć bazę danych za każdym razem, gdy testy zostaną uruchomione, użytkownik bazy danych Django nie może kontynuować.

Oto moja konfiguracja bazy danych.

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', 
    }, 
} 

Odpowiedz

9

Moje rozwiązanie tego problemu było zaskakująco proste, gdy je rozgryzłem.

Połącz się z bazą danych template1 i uruchom CREATE EXTENSION IF NOT EXISTS postgis;. Baza danych template1 jest kopiowana podczas tworzenia nowej bazy danych, więc wszystkie nowe bazy danych będą już miały zainstalowane rozszerzenie.

+0

Pracował jak urok. Jesteś królem. – bbrame

+2

Uruchom: 'sudo -u postgres psql -d szablon1 -c" UTWÓRZ PRZEDŁUŻENIE, JEŚLI NIE ISTNIEJE postgis; "' –