7

我从“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 和适配器

4

2 回答 2

10

致命:角色“杰伊”不存在

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

尝试:

psql -u postgres createuser -P jay

您可能必须将您在提示符下输入的密码放入settings.py,除非您pg_hba.conf使用ident的是 auth 方法。

于 2012-09-07T11:12:09.867 回答
1

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

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

于 2012-09-07T11:11:23.820 回答