230 votes

django test app error - Une erreur s'est produite lors de la création de la base de données de test : permission denied to create database (permission refusée pour créer la base de données)

Lorsque j'essaie de tester une application avec la commande (je l'ai remarqué lorsque j'ai essayé de déployer mon projet en utilisant fabric, qui utilise cette commande) :

python manage.py test appname

Je reçois cette erreur :

Creating test database for alias 'default'...
Got an error creating the test database: permission denied to create database

Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel

syncdb semble fonctionner. Mes paramètres de base de données dans settings.py :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'finance',                      # Or path to database file if using sqlite3.
        'USER': 'django',                      # Not used with sqlite3.
        'PASSWORD': 'mydb123',                  # Not used with sqlite3.
        'HOST': '127.0.0.1',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

0voto

eEmanuel Oviedo Points 31

Vous avez peut-être mis votre test en mode suspendu ou en tâche de fond. Essayez avec fg dans le shell bash.

0voto

Travis Points 29

Vous pouvez également créer une base de données de test manuellement en mettant la clé TEST dans votre fichier settings.py.

Ensuite, passez la clé MIRROR avec la valeur 'default' pour que vous puissiez tester sur une réplique exacte de votre base de données par défaut, ou celle de votre choix.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'finance',
        'USER': 'django',
        'TEST': {
             'MIRROR': 'default',
        },
        'PASSWORD': 'mydb123',
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}

Vous pouvez également vérifier le docs avancés sur django postgres

0voto

bunny patel Points 191

Je suis confronté au même problème pour

pytest

J'ai modifié les droits de l'utilisateur de django pour qu'il puisse créer une base de données de test lors de l'exécution des cas de test python.

ALTER USER USERNAME CREATEDB;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X