为什么我的Django应用程序无法到达Postgres服务器?

时间:2012-12-19 23:24:08

标签: django postgresql ubuntu database-connection

这两台服务器都是我主机上的VirtualBox服务器,我能够在它们之间进行网络连接(从一个到另一个的ssh等),除了这个问题(我不太了解它)排除网络是一个潜在的原因。)

与数据库服务器有关:

  1. 我的IP表允许端口5432
  2. 上的所有TCP访问
  3. 我创建了一个Postgres数据库,使用psql用户
  4. 可以使用foo1 shell无问题地打开和查询
  5. 我安装了psychopg2
  6. 我的Django应用程序配置了默认数据库(实际上只配置了一个),使用5432用户端口foo1上的服务器IP,密码设置为foo1的密码
  7. 我在Ubuntu 12.04.1上使用Postgres 9.2,使用最新的psychopg2和Django 1.5 beta
  8. 错误来自psychopg2的初始连接尝试并且没有错误消息(否则,我可能不必问这个)。简单来说,OperationalError。所以,我的问题,更具体地说,是:我从该列表中遗漏了哪些更明显的事情,这可能导致这个问题。

    回溯 - 来自uWSGI日志,所以没有上下文:(

    # ... 10 + frames above here ommitted, since the they amount to
    # essentially MyModel.objects.get(pk=1)
    
    File "/var/www/myapp/deps/current/venv/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 316, in cursor
        cursor = util.CursorWrapper(self._cursor(), self)
    
    File "/var/www/myapp/deps/current/venv/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 210, in _cursor
        self.connection = self.get_new_connection(conn_params)
    
    File "/var/www/myapp/deps/current/venv/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 183, in get_new_connection
        return Database.connect(**conn_params)
    
    File "/var/www/myapp/deps/current/venv/local/lib/python2.7/site-packages/psycopg2/__init__.py", line 178, in connect
        return _connect(dsn, connection_factory=connection_factory, async=async)
    
    OperationalError
    

1 个答案:

答案 0 :(得分:1)

您只能安装PostgreSQL客户端,这将为您提供psql。

对于Windows,安装ODBC驱动程序,您将获得psql。在这里得到它: PostgreSQL ODBC Driver

在Linux上,您的包管理器应该有一个postgresql-client-XXX包。在Ubuntu中,它被称为postgresql-client-9.1。