superusuario superuser create crear django postgresql postgresql-9.1 postgis

superuser - crear superusuario django



no se puede crear una extensión sin un rol de superusuario (3)

Estoy intentando ejecutar pruebas unitarias en Django y crea una nueva base de datos. La base de datos tiene extensiones postgis y cuando creo regularmente la base de datos, uso "CREAR EXTENSIÓN postgis".

Sin embargo, cuando ejecuto pruebas, me da el siguiente error:

$ ./manage.py test Creating test database for alias ''default''... Got an error creating the test database: database "test_project" already exists Type ''yes'' if you would like to try deleting the test database ''test_project'', or ''no'' to cancel: yes Destroying old test database ''default''... DatabaseError: permission denied to create extension "postgis" HINT: Must be superuser to create this extension.

El usuario ya tiene el privilegio Crear BD, estoy usando PostgreSQL 9.1 en Ubuntu 12.04 con Postgis 2.0.


La forma más fácil que encontré es:

su postgres psql alter role user_name superuser; #then create the extension as the user in a different screen alter role user_name nosuperuser;

Básicamente, otorgue poderes de superusuario al usuario durante un breve periodo de tiempo y cree la extensión. Luego revoque los poderes del superusuario.

También puede usar /connect user_name para convertirse en ese usuario y crear la extensión directamente desde el usuario de postgres .


Otra forma de resolver esto que se sugiere en los documentos de django

$ psql <db name> > CREATE EXTENSION postgis;

puede iniciar sesión en una base de datos como superusuario y crear la extensión una vez. La extensión estará disponible para el usuario db de tu api. Cuando django se ejecuta CREATE EXTENSION IF NOT EXISTS postgis postgres no lanzará.

Si está viendo errores al migrar la verificación doble, creó la extensión en la base de datos correcta, una sesión de muestra

$ psql => /l - list databases => /c <db name> - connect to django db => create extension postgis;

puede verificar que la extensión está instalada si ve la tabla spatial_ref_sys

=> /dt List of relations Schema | Name | Type | Owner --------+----------------------------+-------+---------- public | spatial_ref_sys | table | postgres

para las pruebas, recomiendo ejecutarlas en una base de datos de desarrollo local y otorgar al usuario capacidades de superusuario como > ALTER ROLE <user_name> SUPERUSER;