2013-05-13 9 views
26

Ich versuche Einheitstests in Django auszuführen, und es erstellt eine neue Datenbank. Die Datenbank hat Postgis-Erweiterungen und wenn ich regelmäßig die Datenbank erstelle, verwende ich "CREATE ExTENSION postgis".kann keine Erweiterung ohne Superuser-Rolle erstellen

Allerdings, wenn ich Tests durchführen, gibt es mir die folgende Fehlermeldung:

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

Der Benutzer hat die bereits DB Privileg erstellen, ich bin 2.0 PostgreSQL 9.1 auf Ubuntu 12.04 mit Postgis verwenden.

Antwort

22

Der einfachste Weg, ich gefunden ist:

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

Grundsätzlich geben Sie dem Benutzer für kurze Zeit Superuser-Befugnisse und erstellen Sie die Erweiterung. Widerrufen Sie dann die Superuser-Befugnisse.

Sie können auch \connect user_name verwenden, um dieser Benutzer zu werden, und die Erweiterung direkt vom postgres Benutzer erstellen.

+1

Das macht Sinn, keinen Sinn, den Benutzer mit Superuser-Privilegien zu halten, reduziert die Angriffsfläche. Ich mag das! –

Verwandte Themen