我从“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和适配器
答案 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进程的用户名。