1. ホーム
  2. database

superuser ロールがないとエクステンションを作成できない

2023-12-02 09:52:44

質問

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.

ユーザーはすでにDB作成権限を持っています。Ubuntu 12.04でPostgreSQL 9.1を使用し、Postgis 2.0を使用しています。

どのように解決すればよいですか?

postgisに関するDjangoのドキュメントに、ユーザ権限の設定に関する情報があります。 .

最悪の場合、新しいスーパーユーザを作成することができます。

$ createuser --superuser <user_name>

または既存のユーザーの役割を変更する。

postgres# ALTER ROLE <user_name> SUPERUSER;