2012-09-07 11 views
7

me encontré con estas líneas de "manage.py shell Python":Django error de conexión de base de datos

from django.db import connection 
cursor = connection.cursor() 

Pero tengo el siguiente error:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 306, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py", line 177, in _cursor 
    self.connection = Database.connect(**conn_params) 
    File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect 
    connection_factory=connection_factory, async=async) 
OperationalError: FATAL: role "jay" does not exist 

En settings.py tengo

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'mysite',      
     'USER': '',      
     'PASSWORD': '',     
     'HOST': '',      
     'PORT': '',      
    } 
} 

¿Qué estoy haciendo mal aquí? Instalé postgresql y el adaptador

Respuesta

10

FATAL: role "jay" does not exist

Desde USER está en blanco, se trata de utilizar cualquiera que sea su nombre de usuario local es (jay), y no se ha creado un usuario PostgreSQL con ese nombre.

Probar:

psql -u postgres createuser -P jay 

Es probable que tenga que poner la contraseña que introduzca en el indicador en settings.py, a menos que su pg_hba.conf está utilizando ident como el método de autenticación.

+0

en 9.4beta3 en Debian, el comando sería: 'sudo su - postgres -c "-P createuser Jay"' hay sin duda una manera de hacerlo con psql también, pero la -u debe haber -U y yo recibíamos otros errores. –

+2

@jcomeau_ictx Nunca necesita 'sudo su -'. Nunca. Use 'sudo -u postgres' en su lugar. Lo mismo, no hay necesidad de las citas desordenadas. –

1

Dado que no ha proporcionado un nombre de usuario, postgresql está utilizando el nombre de usuario del usuario de su sistema operativo bajo el cual se está ejecutando django para conectarse a la base de datos. El error que está recibiendo dice que ese usuario (jay) no está definido en la base de datos.

Una posible solución es proporcionar el nombre de usuario y la contraseña del propietario de la base de datos mysite. Agregue también localhost como el host para asegurar que postgresql use autenticación de usuario/contraseña en lugar de usar el nombre de usuario que posee el proceso django.

Cuestiones relacionadas