Тестирование приложения в Django с PostGIS с бэкхенда

Я пытаюсь запустить тесты на приложении GIS Django, работающем под управлением PostGIS в качестве бэкэнда базы данных.

когда я пытаюсь запустить тесты, я получаю следующую ошибку:

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

ошибка имеет смысл. Только пользователи базы данных admin могут устанавливать расширения, так как эта привилегия позволяет выполнять произвольный внешний код. Но поскольку тестовый бегун должен воссоздавать базу данных при каждом запуске тестов, пользователь базы данных 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',
    },
}

1 ответов


мое решение было удивительно простым, как только я понял это.

подключиться к template1 база данных и запустите CREATE EXTENSION IF NOT EXISTS postgis;. The template1 база данных копируется при создании новой базы данных, поэтому все новые базы данных уже будут иметь установленное расширение.