Saltar al contenido

Error de la aplicación de prueba de django: se produjo un error al crear la base de datos de prueba: permiso denegado para crear la base de datos

Solución:

Cuando Django ejecuta el conjunto de pruebas, crea una nueva base de datos, en su caso test_finance. El usuario de postgres con nombre de usuario django no tiene permiso para crear una base de datos, de ahí el mensaje de error.

Cuando corres migrate o syncdb, Django no intenta crear el finance base de datos, para que no obtenga ningún error.

Puede agregar el permiso createdb al usuario de django ejecutando el siguiente comando en el shell de postgres como superusuario (consejo para esta respuesta de desbordamiento de pila).

=> ALTER USER django CREATEDB;

Nota: El nombre de usuario utilizado en el ALTER USER <username> CREATEDB; El comando debe coincidir con el usuario de la base de datos en sus archivos de configuración de Django. En este caso, el póster original tenía al usuario como django la respuesta anterior.

He encontrado una solución interesante a tu problema.
De hecho, para MySQL puede otorgar privilegios para bases de datos no existentes.
Entonces puede agregar el nombre ‘test_finance’ para su base de datos de prueba en su configuración:

    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.
        'TEST': {
            'NAME': 'test_finance',
        },
    }
}

inicie el shell MySQL como usuario root:

mysql -u root -p

y ahora otorgue todos los privilegios a esta base de datos inexistente en MySQL:

GRANT ALL PRIVILEGES ON test_finance.* TO 'django'@'localhost';

Ahora Django comenzará las pruebas sin ningún problema.

En el caso de Postgres, el usuario debe tener createdb permiso.

ALTER ROLE miriam CREATEDB;

Consulte esta documentación: https://docs.djangoproject.com/en/2.0/topics/testing/overview/#the-test-database

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *