繁体   English   中英

无法使用 Bitnami Django 堆栈连接到 Postgres 数据库

[英]Can't connect to Postgres database with Bitnami Django stack

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

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

非常感谢,亚历克斯

所以 PostgreSQL 套接字位于/opt/bitnami/postgresql但您的libpqpsycopg2包装的 C 库)正在/tmp中寻找套接字,对吗? 尝试更改HOST设置以指向正确的套接字位置

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

或者这个

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

您可能还想更改 PostgreSQL 密码。

使用命令重启 postgresql

sudo /opt/bitnami/ctlscript.sh restart postgresql

它对我有用

在此处输入图像描述

将主机名更改为localhost

   DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.postgresql_psycopg2",
            "NAME": "DB",
            "USER": "USER",
            "PASSWORD": "PASS",
            "HOST": "localhost",
            "PORT": "5432",
        }
    }

另外,不要将它与默认的 postgres 用户连接。 创建一个新的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM