2017-04-21 228 views
0

我用我的myapp以下sqlite的连接/ settings.py文件:Django的psycopg2.OperationalError:fe_sendauth错误,但没有连接到PostgreSQL数据库

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迁移命令行中我碰到下面的错误上:

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的。

这可能是由于依赖?

+0

这可能是由于其中一个依赖关系。你介意分享你的整个settings.py文件吗?我相信有些地方,有一个导入覆盖你的'DATABASES'变量 –

+0

@KrishnaChaitanyaKornepati是依赖关系,我编辑了dep中的源代码。要解决这个问题。你可以把你的评论放在上面,也许可以解释为什么它必须是一个依赖项,如果我没有在我的设置中使用psql任何地方,我会接受你的回答 – proximacentauri

回答

0

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

  1. 任何进口到settings.py文件后,你设置DATABASES变量可能覆盖它。
  2. 如果不是这种情况,有些依赖项必须手动覆盖此设置。你可能想看看你的INSTALLED_APPS
  3. 如果仍然不够,您可能需要查看您正在尝试与django交互的项目中使用的任何其他依赖项。
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'), 
    } 
} 

这可能对你有所帮助。

+0

我得到和以前一样的错误,我很确定问题是依赖关系。如果我可以解决它,将工作,并发布答案 – proximacentauri