【问题标题】:django.db.utils.OperationalError: fe_sendauth: no password supplieddjango.db.utils.OperationalError:fe_sendauth:未提供密码
【发布时间】:2016-07-12 20:47:36
【问题描述】:

我已经从 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

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

【问题讨论】:

  • 您是否使用 project_name 和 'admin' 用户创建了数据库。你确定不需要密码吗?
  • 是的,我尝试在 PgAdminIII 中创建数据库,但也出现了同样的错误。
  • 您的数据库似乎有问题。为什么不在终端psql -U postgres 中尝试以下命令,然后是create database project_name;。如果可行,请将设置中的用户更改为 postgres
  • 你最后搞定了吗?

标签: django git postgresql operationalerror


【解决方案1】:

也许是一件愚蠢的事情。但对我来说,问题是 postgres 实际上并没有运行。所以要经常检查它是否在运行。

在 Linux 中:

sudo service postgresql status

【讨论】:

    【解决方案2】:

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

    首先,如果数据库没有密码,去掉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',
        }
    }
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 尝试将登录名改为postgres而不是admin
      • 我应该在哪里做??
      • 在你的 settings.py 中,尝试 'user': 'postgres'
      • 这对我来说已经很接近了,在查看了 settings.py ('PASSWORD': os.getenv('DATABASE_PASSWORD'),) 之后,我意识到我没有在这个新 shell 中激活环境变量。
      猜你喜欢
      • 2021-06-24
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多