我的Django测试因South的架构迁移顺序不起作用?
当我运行
manage.py test myapp
时,它出现了这个错误
Creating test database for alias 'default'...
! Error found during real run of migration! Aborting.
_mysql_exceptions.OperationalError: (1005, "Can't create table
'test_dom.#sql-49b_1a1' (errno: 150)")
我正在使用 south
来处理数据库结构的迁移,使用的是 django 1.3 和 mysql。
需要注意的是,当我单独配置项目时,我会按照以下顺序进行操作:
- 先执行 syncdb
- 然后迁移 app1
- 接着迁移 app2
- 最后进行迁移
最后一次迁移会应用到所有其他的应用。如果我不手动对前两个应用进行迁移,south 也会崩溃。
有没有什么办法可以解决这个问题?
2 个回答
3
你知道吗?在使用south进行数据库迁移的时候,你可以定义依赖关系。
http://south.aeracode.org/docs/dependencies.html
如果你定义了这些依赖关系,那么只需要运行一次“manage.py migrate”就可以了。如果不行的话,请把错误信息发出来。
2
为什么在执行syncdb之后还要进行迁移?难道在新创建的数据库之后就没有迁移的事情了吗?
另外请注意south的设置:
SKIP_SOUTH_TESTS = True
SOUTH_TESTS_MIGRATE = False