Не может создавать расширение без роли суперпользователя
Я пытаюсь запустить модульные тесты в 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.
Ответы
Ответ 1
Документация Django для postgis содержит некоторую информацию о настройке прав пользователя.
В худшем случае вы можете создать нового суперпользователя:
$ createuser --superuser <user_name>
или изменить существующую роль пользователя:
postgres# ALTER ROLE <user_name> SUPERUSER;
Ответ 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
.