Moi*_*dri 4 python django postgis geodjango django-testing
我正在设置Django项目running tests.但我得到以下错误:
Got an error creating the test database: permission denied to copy database "template_postgis"
Run Code Online (Sandbox Code Playgroud)
注意:我的默认应用程序的数据库工作正常.的issue is happening while running tests.
完整的堆栈跟踪如下:
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
Run Code Online (Sandbox Code Playgroud)
以下是DATABASE配置setting.py:
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',
},
}
}
Run Code Online (Sandbox Code Playgroud)
对此有何帮助?以下是我尝试的步骤:
授予用户创建数据库访问权限:
ALTER USER my_user CREATEDB;
Run Code Online (Sandbox Code Playgroud)为test_my_db数据库的用户授予所有权限:
GRANT ALL PRIVILEGES ON DATABASE test_mozio_db_test to mozio;
Run Code Online (Sandbox Code Playgroud)编辑:修复上述问题后,我也收到错误:
django.db.utils.ProgrammingError: type "geometry" does not exist
LINE 5: "polygon" geometry(POLYGON,4326) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
更新了我的答案以解决这两个问题.
我终于找到了解决这个问题的方法.问题是,当我创建时template_postgis,我没有将它设置为template.
你可以通过做:
SELECT * FROM pg_database;
Run Code Online (Sandbox Code Playgroud)
您可以通过设置修复它datistemplate=true的template_postgis运行:
update pg_database set datistemplate=true where datname='template_postgis';
Run Code Online (Sandbox Code Playgroud)
之后,如果您收到与以下相关的错误geometry:
django.db.utils.ProgrammingError: type "geometry" does not exist
LINE 5: "polygon" geometry(POLYGON,4326) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
那是因为你需要在postgix数据库中添加扩展名.为了解决这个问题,添加postgis到template_postgis:
psql -d psql -d template_postgis -c 'create extension postgis;'
Run Code Online (Sandbox Code Playgroud)
注意:您必须是超级用户才能创建此扩展.
| 归档时间: |
|
| 查看次数: |
4044 次 |
| 最近记录: |