Django 1.4.3继续使用虚拟数据库引擎设置值

时间:2013-02-12 07:16:22

标签: django

我无法弄清楚为什么Django不使用我在settings.py文件中指定的数据库引擎,而是使用值django.db.backends.dummy

以下是 my settings.py 文件的数据库部分,该文件位于/project/app/settings.py:

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:我在shell中尝试了这个,按预期工作,我可以到达我的数据库:

# python manage.py shell

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

更新3:发生了一些奇怪的事情。为了调试这个问题,我在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正在使用某种缓存版本的settings.py 文件。

1 个答案:

答案 0 :(得分:0)

这是最终修复我的问题的原因。我不确定究竟是什么原因,但它看起来与运行supervisord有关。

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

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

无论如何,这是我采取的步骤,它可能会指出其他人遇到同样的问题:

  1. 我删除了env1(/ home / mydomain / www / env1)< - 这可能与问题无关但我删除了envivornment,因为我不需要它

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

  3. 我启动了supervisord(运行bash脚本以启动gunicorn_django进程)和nginx

  4. 网站现在按预期工作。