Django数据库连接错误

时间:2012-09-07 11:03:00

标签: django postgresql

我从“python manage.py shell”运行这些行:

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

但是出现了以下错误:

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

在settings.py中我有

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

我在这里做错了什么?我安装了postgresql和适配器

2 个答案:

答案 0 :(得分:10)

  

致命:角色“周杰伦”不存在

由于USER为空,因此它使用您的本地用户名(jay),并且您没有使用该名称创建PostgreSQL用户。

尝试:

psql -u postgres createuser -P jay

除非settings.py使用pg_hba.conf作为身份验证方法,否则您可能必须将您在提示时输入的密码放入ident

答案 1 :(得分:1)

由于您尚未提供用户名,因此postgresql使用操作系统用户的用户名来运行django以连接到数据库。您收到的错误表明该用户(jay)未在数据库中定义。

可能的解决方案是提供mysite数据库所有者的用户名和密码的名称。同时添加localhost作为主机,以确保postgresql使用用户/密码身份验证,而不是使用拥有django进程的用户名。