(最終更新月:2021年8月)
「テストプログラムはWebアプリ開発には不可欠!」とテストプログラム作成を意気揚々と進めていたところ、
Got an error creating the test database: permission denied to create database
というエラーに遭遇してしまいました。
調べてみると、テストプログラム自体のエラーではなく、Djangoで使用しているユーザーとデータベースの権限が原因でエラーが発生しているとのことがわかりました
使用しているデータベースにより解決方法は異なりますが、下記にてpostgreSQL ポスグレ使用時の解決策をご紹介していきます
【データベース作成権限をDjangoユーザーへ付加する】
解決策は、
ユーザーへデータベースの作成権限を付加すること!
順を追って方法を説明します
1)メインユーザーとしてデータベースへアクセスします
$ psql -U postgres -d postgres
2)Djangoで使用しているユーザーに権限を付加する
ALTER ROLE <Djangoユーザー> CREATEDB;
※<Djangoユーザー>の箇所をDjagnoで使用しているユーザー名へ変更します
例えば、「djangouser」というユーザー名の場合、
ALTER ROLE djangouser CREATEDB;
となります
3)データベースのリスタート
こちらはなくとも大丈夫かもしれませんが、念のためデータベースをリスタートしておきましょう(OSがubuntuの場合)
$ service postgresql restart
以上です!
「解決したよ!」という方も、「ちょっと探してた情報と違うよ!」という方にも、下記にて追加、補足の情報がございます!
【参考・補足】
MySQLを使用している場合は上記の方法とは異なりますのでご注意ください!
MySQLではsettings.pyに下記を追加する方法となります
DATABASES = {
'default': {
...,
'TEST': {
'NAME': 'test_database',
},
}
}
そもそも「DjangoとpostgreSQLを連動させる方法がわからない!」という方はこちらをご覧ください!