我正在使用 Django==1.7,并且有四个应用程序:
frontend
game
geo
people
应用程序设置是这样的:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'fandjango',
'people',
'geo',
'game',
'frontend'
)
数据库设置是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'hoods_raising',
'USER': 'hoods_raising',
'PASSWORD': 'hr$nestor$123',
'HOST': 'localhost',
'TEST_CHARSET': 'utf8mb4'
}
}
我的应用程序有迁移和测试:
game
migrations
0001_initial.py
geo
migrations
0001_initial.py
tests.py
people
migrations
0001_initial.py
0002_install_data.py
许多文件被省略以缩小问题范围(如果需要,我将使用更多文件扩展问题),models.py
例如views.py
.
的内容0002_install_data.py
是:
class Migration(migrations.Migration):
dependencies = [
('people', '0001_initial'),
]
operations = [
migrations.RunPython(NamesInstaller(), lambda apps, schema_editor: None)
]
如果我运行manage.py migrate
安装数据库,一切都会按预期工作。
如果我运行manage.py test
测试,第一步将是测试数据库安装。奇怪的事情发生了:
要执行的第一个迁移是 0002_install_data。永远不会创建其他表(例如 auth 表、geo 表、游戏表、fandjango 表……),并且people
不会运行迁移 0001_initial in。由于这样的原因,出现依赖错误0002_install_data
(它说不0001_initial
存在)。KeyError: u"Migration people.0002_install_data dependencies references nonexistent parent node (u'people', u'0001_initial')"
为什么会发生这种情况?为什么该test
命令不能正确安排应用程序迁移?(这不会发生在manage.py migrate
)。