28

我已经从 github 克隆了一个 repo 并正在处理它。该项目在 django 中并使用 postgres 作为数据库。这个项目现在处于生产端,我需要对其进行一些更改。数据库规格是:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        # Or path to database file if using sqlite3.
        'NAME': 'project_name',
        'USER': 'admin',
        'PASSWORD': '',
        # Empty for localhost through domain sockets or           '127.0.0.1'
        # for localhost through TCP.
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

我想在我的本地主机上运行它,但我不能。我收到错误:

django.db.utils.OperationalError: fe_sendauth: no password supplied

我已经搜索过这个问题,但找不到可以帮助我的解决方案。谁能告诉我问题出在哪里?

4

3 回答 3

30

如果您想使用本地无密码连接,则需要删除值“HOST”、“PORT”和“PASSWORD”。

使用此配置,您的连接器将尝试使用 unix 域套接字进行连接,这是 Postgres 默认情况下唯一允许的无密码连接

于 2016-03-25T06:07:15.357 回答
9

我可以想到两种可能的解决方案来解决这个问题。

首先,如果数据库没有密码,则删除PASSWORD密钥。例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'project_name',
        'USER': 'admin',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

其次,如果数据库有密码,请在PASSWORD密钥中提供:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'project_name',
        'USER': 'admin',
        'PASSWORD': '<YOUR PASSWORD HERE...>',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
于 2018-03-25T09:06:37.743 回答
1

也许是一件愚蠢的事情。但对我来说,问题是 postgres 实际上并没有运行。因此,请始终检查它是否正在运行。

在 Linux 中:

sudo service postgresql status
于 2020-06-25T12:40:38.560 回答