Подтвердить что ты не робот

Не может создавать расширение без роли суперпользователя

Я пытаюсь запустить модульные тесты в Django и создает новую базу данных. В базе данных есть расширения postgis, и когда я регулярно создаю базу данных, я использую "CREATE ExTENSION postgis".

Однако, когда я запускаю тесты, это дает мне следующую ошибку:

$ ./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.

У пользователя уже есть привилегия Create DB, я использую PostgreSQL 9.1 на Ubuntu 12.04 с Postgis 2.0.

4b9b3361

Ответ 2

Самый простой способ найти:

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

В принципе дайте пользователю полномочия суперпользователя на короткое время и создайте расширение. Затем отмените полномочия суперпользователя.

Вы также можете использовать \connect user_name, чтобы стать этим пользователем, и создать расширение непосредственно от пользователя postgres.