python – Django测试:创建测试数据库时出错:权限被拒绝复制数据库“template_postgis”

我正在设置Django Project来运行测试.但我得到以下错误:

Got an error creating the test database: permission denied to copy database "template_postgis"

注意:我的默认应用程序的数据库工作正常.运行测试时会出现问题.

完整的堆栈跟踪如下:

moin@moin-pc:~/workspace/mozio$python manage.py test --verbosity=3
nosetests --verbosity=3
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
Creating test database for alias 'default' ('test_my_db')...
Got an error creating the test database: permission denied to copy database "template_postgis"

Type 'yes' if you would like to try deleting the test database 'test_mozio_db_test', or 'no' to cancel: yes
Destroying old test database 'default'...
Got an error recreating the test database: must be owner of database test_mozio_db_test

以下是setting.py的DATABASE配置:

POSTGIS_VERSION = (2, 2, 2)

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'my_db',
        'USER': 'my_user',
        'PASSWORD': 'my_pass',
        'HOST': '<HOST_IP',
        'PORT': '',
        'TEST': {
            'NAME': 'test_my_db',
        },
    }
}

对此有何帮助?以下是我尝试的步骤:

>授予用户创建数据库访问权限:

ALTER USER my_user CREATEDB;

>为test_my_db数据库授予用户所有权限:

GRANT ALL PRIVILEGES ON DATABASE test_mozio_db_test to mozio;

编辑:
修复上述问题后,我也遇到了错误:

django.db.utils.ProgrammingError: type "geometry" does not exist
LINE 5:     "polygon" geometry(POLYGON,4326) NOT NULL,

更新了我的答案以解决这两个问题.

最佳答案
我终于找到了解决这个问题的方法.问题是,当我创建template_postgis时,我没有将它设置为模板.

你可以通过做:

SELECT * FROM pg_database;

您可以通过运行以下命令为template_postgis设置datistemplate = true来修复它:

update pg_database set datistemplate=true where datname='template_postgis';

之后,如果您收到与几何相关的错误,例如:

django.db.utils.ProgrammingError: type "geometry" does not exist
LINE 5:     "polygon" geometry(POLYGON,4326) NOT NULL,

那是因为你需要在数据库中添加扩展名postgix.为了解决这个问题,请将postgis添加到template_postgis,如:

psql -d psql -d template_postgis -c 'create extension postgis;'

注意:您必须是超级用户才能创建此扩展.

转载注明原文:python – Django测试:创建测试数据库时出错:权限被拒绝复制数据库“template_postgis” - 代码日志