【问题标题】:Can't connect to Postgres database with Bitnami Django stack无法使用 Bitnami Django 堆栈连接到 Postgres 数据库
【发布时间】:2011-08-31 10:16:31
【问题描述】:

一直遇到无法连接数据库的问题:

psycopg2.OperationalError: could not connect to server: No such file or directory

Is the server running locally and accepting connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

我做了一些阅读,似乎这是一个很常见的问题,大多数人通过检查端口是否正确来解决,即在他们的 setup.py 中将 5432 更改为 5433。但这似乎不是我的问题——在 /opt/bitnami/postgresql 目录中,我看到了 .s.PGSQL.5432。我可以登录 psql,它似乎工作正常。我认为默认数据库名称是 postgresql,但我也尝试使用名为 djangostack 的数据库名称,但它也不起作用。我在 Django 的 setting.py 中的数据库信息如下所示:

DATABASES = {
'default': {
    'ENGINE': 'postgresql_psycopg2', #'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'postgres',                      # Or path to database file if using sqlite3.
    'USER': 'postgres',                      # Not used with sqlite3.
    'PASSWORD': 'bitnami',                  # Not used with sqlite3.
    'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '5432',                      # Set to empty string for default. Not used with sqlite3.
}

我查看 /tmp/ 目录,那里没有任何东西,无论是隐藏的还是其他的。应该有吗?有谁知道我做错了什么?我愚蠢地覆盖了原始示例项目,所以我看不到那里的设置。

非常感谢, 亚历克斯

【问题讨论】:

  • 对不起,我应该补充一点,我在 ec2 上运行 Bitnami Django 1.3 AMI,如 this link 的底部所示。
  • 你安装了postgresql吗?你开始了吗?您可以使用 pgsql 或 pgAdmin 之类的客户端连接到它吗?
  • 是的,AMI默认安装的,我可以用psql连接。

标签: django postgresql bitnami


【解决方案1】:

所以 PostgreSQL 套接字位于 /opt/bitnami/postgresql 中,但您的 libpqpsycopg2 包装的 C 库)正在寻找 /tmp 中的套接字,对吗?尝试更改HOST setting to point at the proper socket location

'default': {
    'ENGINE':   'postgresql_psycopg2',
    'NAME':     'postgres',
    'USER':     'postgres'
    'PASSWORD': 'bitnami',
    'HOST':     '/opt/bitnami/postgresql/.s.PGSQL.5432', # <-------
    'PORT':     '5432',
}

Or this:

'default': {
    'ENGINE':   'postgresql_psycopg2',
    'NAME':     'postgres',
    'USER':     'postgres'
    'PASSWORD': 'bitnami',
    'HOST':     '/opt/bitnami/postgresql', # <-------
    'PORT':     '5432',
}

您可能还想更改 PostgreSQL 密码。

【讨论】:

  • 根据Django docs,socket-as-hostname 功能仅适用于 MySQL。将 HOST 设置为 127.0.0.1 以绕过套接字。
  • @Mel:文档通常呈现现实的简化版本。我发现了一些示例表明 socket-as-hostname 也适用于 psycopg2。当您使用 PostgreSQL 的主机路径时,文档似乎有点模棱两可。
  • 感谢 mu,将“host”设置为“/opt/bitnami/postgresql”已修复。
  • 如果您使用 BitNami AMI 设置 'HOST': '127.0.0.1',应该也可以。
猜你喜欢
  • 1970-01-01
  • 2010-12-14
  • 2016-09-16
  • 2019-12-14
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
相关资源
最近更新 更多