【问题标题】:Testing Django app with Postgis Backend使用 Postgis 后端测试 Django 应用程序
【发布时间】:2016-05-14 12:52:54
【问题描述】:

我正在尝试在运行 PostGIS 作为数据库后端的 GIS 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',
    },
}

【问题讨论】:

    标签: python django postgresql unit-testing postgis


    【解决方案1】:

    我的解决方案非常简单,一旦我想通了。

    连接到template1 数据库,并运行CREATE EXTENSION IF NOT EXISTS postgis;template1 数据库在创建新数据库时被复制,因此所有新数据库都已经安装了扩展。

    【讨论】:

    • 工作就像一个魅力。你是国王。
    • 运行:sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS postgis;"
    猜你喜欢
    • 2014-09-03
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多