【问题标题】:Why can't my Django application reach my Postgres server?为什么我的 Django 应用程序无法访问我的 Postgres 服务器?
【发布时间】:2012-12-19 23:24:08
【问题描述】:

两台服务器都是我主机上的 VirtualBox 服务器,除了这个问题(我不太了解排除网络作为潜在原因)。

关于数据库服务器:

  1. 我的 IP 表允许端口 5432 上的所有 TCP 访问
  2. 我创建了一个 Postgres 数据库,可以使用 psql shell 毫无问题地打开和查询,使用 foo1 用户
  3. 我已经安装了 psychopg2
  4. 我的 Django 应用程序配置了默认数据库(实际上是唯一配置的数据库)以使用我的服务器的 IP 端口5432,使用foo1 用户,密码设置为foo1'密码
  5. 我在 Ubuntu 12.04.1 上使用 Postgres 9.2 以及最新的 Psychopg2 和 Django 1.5 beta

该错误来自于 Psychopg2 的初始连接尝试,并且没有错误消息(否则,我可能不必问这个)。很简单,OperationalError。所以,更具体地说,我的问题是:我在该列表中遗漏了哪些更明显的事情,这可能会导致这个问题。

Traceback - 来自 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

【问题讨论】:

  • 你能psql 从运行 django 的虚拟机到运行 Postgres 的虚拟机上的数据库吗?
  • @MattBall - 我不知道甚至可以做这样的事情。我没有在应用服务器上安装 Postgres - 我可以安装 just psql shell,如果可以,我如何连接到另一个虚拟机上的服务器? (提前致谢)
  • 这确实属于一个完全独立的问答,可能在不同的 SE 网站上,但我会咬一口。我不记得你是否可以只安装外壳。我认为你可以,但即使不是,它也不应该真的很重要。使用包管理器来安装它。 RTFD,但 tl;dr 使用 -h 选项(如 psql -h somehost)来指定运行 db 服务器的主机。
  • @MattBall - 谢谢 - 我会试一试

标签: django postgresql ubuntu database-connection


【解决方案1】:

你只能安装一个 PostgreSQL 客户端,这会给你 psql。

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

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

【讨论】:

  • 谢谢。这是 PG 中的 listen_adresses 设置。这帮助我发现了它。
猜你喜欢
  • 1970-01-01
  • 2020-12-13
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多