Django psycopg2.OperationalError:fe_sendauth错误但没有连接到postgresql数据库

时间:2017-04-21 07:00:38

标签: python django postgresql sqlite

我在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。

这可能是由于依赖吗?

2 个答案:

答案 0 :(得分:0)

试试这个,

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'),
    }
}

这可能对您有所帮助。

答案 1 :(得分:0)

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

  1. 在设置可能覆盖它的settings.py变量后,导入DATABASES文件的任何内容。
  2. 如果不是这种情况,某些依赖项必须手动覆盖此设置。您可能需要查看INSTALLED_APPS
  3. 如果仍然不够,您可能需要查看您正在尝试与django交互的项目中使用的任何其他依赖项。