Django和postgres:没有连接

时间:2014-12-14 11:52:49

标签: python django postgresql connection

我一直试图将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。

1 个答案:

答案 0 :(得分:5)

我会检查postgresql.conf以确认PostgreSQL用来监听的端口。默认值通常是5432,而不是8000,所以除非你明确配置PostgreSQL使用8000,否则我怀疑这至少是你问题的一部分,错误信息肯定会被解释(虽然它可能不是唯一可能的原因) )。