【问题标题】:Django psycopg2.OperationalError: fe_sendauth error but not connecting to postgresql databaseDjango psycopg2.OperationalError: fe_sendauth 错误但未连接到 postgresql 数据库
【发布时间】:2017-09-18 01:23:39
【问题描述】:

我在 myapp/settings.py 文件中使用以下 sqlite 连接:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':testdb:',
        #I also tried 'NAME': 'testdb',
    },
}

在我正在使用的 manage.py 文件中:

if __name__ == "__main__":
    os.environ.setdefault("myapp.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

在命令行上运行 ./manage.py migrate 时出现以下错误:

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

我尝试删除 psycopg2 并重新运行迁移并收到以下错误:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'

我不明白为什么 django 试图连接到一个 psql 数据库,其中应用程序中唯一的 DATABSES 配置是用于 sqlite3。

这可能是由于依赖关系吗?

【问题讨论】:

  • 这可能是由于依赖项之一。您介意分享您的整个settings.py 文件吗?我相信在某些地方,有一个导入覆盖了您的 DATABASES 变量
  • @KrishnaChaitanyaKornepati 是的依赖相关,我在一个部门编辑了源代码。要解决这个问题。你可以把你的评论放在上面,如果我没有在我的设置中的任何地方使用 psql 并且我会接受你的回答,也许可以解释为什么它必须是一个依赖项

标签: python django postgresql sqlite


【解决方案1】:

试试这个,

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

这可能对你有帮助。

【讨论】:

  • 我得到与以前相同的错误,我很确定问题与依赖关系有关。如果我能解决它会工作并发布答案
【解决方案2】:

Django 仅使用DATABASES 设置来生成使用特定数据库驱动程序的迁移。我相信在某个地方,有一个导入覆盖了您的 DATABASES 设置。这些是按优先级顺序查找调试的可能位置。

  1. 在您设置 DATABASES 变量后,任何导入到 settings.py 文件的操作都可能会覆盖它。
  2. 如果不是上述情况,某些依赖项必须手动覆盖此设置。你可能想看看你的INSTALLED_APPS
  3. 如果仍然不够,您可能需要查看您在项目中尝试与 django 交互的任何其他依赖项。

【讨论】:

  • 好的,如果你没有覆盖它怎么办?
  • 你的意思是如果你使用的是 postgres 数据库?如果是,您只需要安装它。
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 2018-02-09
  • 2021-06-18
相关资源
最近更新 更多