2012-09-07 15 views
7

ho eseguito queste righe da "guscio manage.py python":Django errore di connessione al database

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

Ma ottenuto il seguente errore:

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 

In settings.py ho

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

Cosa sto facendo di sbagliato qui? Ho installato postgresql e l'adattatore

risposta

10

FATAL: role "jay" does not exist

Dal USER è vuoto, che sta utilizzando qualunque sia il vostro nome utente locale è (jay), e non è stato creato un utente PostgreSQL con quel nome.

Prova:

psql -u postgres createuser -P jay 

Probabilmente dovrete mettere la parola chiave digitata al prompt in settings.py, a meno che il pg_hba.conf sta usando ident come metodo di autenticazione.

+0

su 9.4beta3 su Debian, il comando sarà: 'sudo su - postgres -c "createuser -P jay"' c'è sicuramente un modo per farlo con psql pure, ma la -u dovrebbe essere -U e ho avuto altri errori. –

+2

@jcomeau_ictx Non hai mai bisogno di 'sudo su -'. Mai. Usa invece 'sudo -u postgres'. Stessa cosa, non c'è bisogno di citazioni disordinate. –

1

Dato che non hai fornito un nome utente, postgresql sta utilizzando il nome utente dell'utente del tuo sistema operativo in base al quale django viene eseguito per connettersi al database. L'errore che stai ricevendo dice che quell'utente (jay) non è definito nel database.

Una possibile soluzione è fornire il nome utente e la password del proprietario del database mysite. Aggiungi anche localhost come host per garantire che postgresql usi l'autenticazione utente/password invece di utilizzare il nome utente proprietario del processo django.

Problemi correlati