我不明白为什么 Django 不使用我在 settings.py 文件中指定的数据库引擎,而是使用 value django.db.backends.dummy
。
这是位于 /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:我也在 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文件的某种缓存版本。