2013-02-12 22 views
2

我不明白为什么Django不使用我在settings.py文件中指定的数据库引擎,而是使用值django.db.backends.dummyDjango 1.4.3一直使用虚拟数据库引擎设置值

这里是位于/project/app/settings.py 我的settings.py文件的DB部分:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'my_db_name', 
     'USER': 'my_user', 
     'PASSWORD': 'my_pass', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

这里是什么Django的调试日志显示:

DATABASES 
{'default': {'ENGINE': 'django.db.backends.dummy', 
      'HOST': '', 
      'NAME': 'my_db_name', 
      'OPTIONS': {}, 
      'PASSWORD': u'********************', 
      'PORT': '', 
      'TEST_CHARSET': None, 
      'TEST_COLLATION': None, 
      'TEST_MIRROR': None, 
      'TEST_NAME': None, 
      'TIME_ZONE': 'UTC', 
      'USER': 'my_user'}} 

我正在使用gunicorn和nginx运行本站。该站点目前已将调试模式设置为True。

更新1:当我运行python manage.py diffsettings我得到以下(发动机是正确的):

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'TEST_MIRROR': None, 'NAME': 'my_db_name', 'TEST_CHARSET': None, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'OPTIONS': {}, 'HOST': '', 'USER': 'my_user', 'TEST_NAME': None, 'PASSWORD': 'my_pass', 'PORT': ''}}

更新2:我也这样尝试过的外壳,正常工作,我能达到我的分贝:

# python manage.py shell 

>>> from myapp.models import MyModel 
>>> test = MyModel.objects.all() 
>>> test 
# Outputs all objects from MyModel. 

更新3:一些奇怪的HAPP效果图创作。要调试这个问题,我在settings.py注释掉所有INSTALLED APPS,重启nginx的,但Django的仍然显示他们在调试日志:

INSTALLED_APPS 

('django.contrib.auth', 
'django.contrib.humanize', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'grappelli', 
'django.contrib.admin', 
'foureggs', 
'registration', 
'massadmin') 

它看起来像Django是使用某种的我的设置缓存版本.py文件。

+0

有没有名为'settings.pyc'的文件,删除它并重新启动gunicorn。 – vedarthk 2013-02-12 07:25:16

+0

@vedarthk不,没有settings.pyc文件。 – finspin 2013-02-12 07:44:54

+0

你不小心导入了'local_settings.py'或类似的东西?在'settings.py'中搜索'import'。或者,也许有一个第三方应用程序窃听你的设置? – Thomas 2013-02-12 07:57:19

回答

0

这是什么解决了我的问题到底。我不确定什么是真正的原因,但它看起来与运行supervisord有关。

我在我的域下定义了2个虚拟环境(即/ home/mydomain/www/env1和/ home/mydomain/www/env2)。我在原始问题中描述的问题是env2。

我首先想到的是env1导致了问题,并以某种方式使用settings.py来代替env2中的settings.py。但env1中的settings.py看起来完全不同,所以可能不是问题。

无论如何,这里是我所采取的措施,可能会给一些指点别人运行到同一个问题:

  1. 我删除ENV1(/家/ MYDOMAIN/WWW/ENV1)< - - 这可能是不相关的问题,但我反正删了envivornment,因为我并不需要它

  2. 我杀了这些进程:supervisord,nginx的,gunicorn_django(即pkill supervisord

  3. 我星特德supervisord(它运行bash脚本启动gunicorn_django过程)和nginx的

网站现在都按预期。