我一直试图将Django与postgress一起使用,但似乎我遇到了一种连接问题。
似乎我的问题与settings.py文件有关,其中提供了与数据库交互的这些设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '8000',
}
}
当我从settings.py中删除以上这些行时,
python manage.py runserver
按预期运行服务器。另一方面,当这些行存在时,我收到消息:
conn = _connect(dsn, connection_factory=connection_factory, async=async)
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 8000?
这个问题本来可以预测,因为它是在我第一次尝试"迁移"
时出现的。python manage.py migrate
如下所示,我的用户具有以下属性:
Role name | Attributes | Member of | Description
-----------+------------------------------------------------+-----------+-------------
myuser | Superuser, Create DB | {} |
postgres | Superuser, Create role, Create DB, Replication | {} |
最后,似乎我对psycopg2的安装没有任何问题,因为我能够创建如下所示的mydb。实际上,我系统的数据库列表是
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
mydb | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
我应该包含新属性吗?哪一个?还有别的吗?我是Django和postgres的新手,非常欢迎任何帮助。
顺便说一句,我使用的是Ubuntu 14.04,Python 3.4和Django 1.7.1。
答案 0 :(得分:5)
我会检查postgresql.conf
以确认PostgreSQL用来监听的端口。默认值通常是5432,而不是8000,所以除非你明确配置PostgreSQL使用8000,否则我怀疑这至少是你问题的一部分,错误信息肯定会被解释(虽然它可能不是唯一可能的原因) )。