这里记录我的使用过程
有一个项目之前是用django自带的syncdb来管理的,后面加入south来管理, 步骤:
1.先在installed_app中添加新的应用名称'south'
2. 同步一下,python manage.py syncdb --settings=prj.settings.test
3. 初始化之前的表结构, python manage.py schemamigration app --initial --settings=prj.settings.test
如果有多个app,这一步可能得运行多次.这会在各app目录下生成类似0001_initial.py作为初始条件。
4.现在有新的需求,需要在model中添加一个字段,添加好后运行:
python manage.py schemamigration app --auto --settings=prj.settings.test
这里又会生成一个py文件。
5.根据提示,这下运行:python manage.py migrate app --auto --settings=prj.settings.test ,完成 后会在数据库中添加新字段,并将此操作写入到south_migrationhistory这个表中,south会让生成的py文件与数据库中记录的保持一到处。(注意:如果出现django.db.utils.OperationalError: (1050, "Table 'table_name' already exists")这类错误,说明是有可能在数据库中不存在0001_initial的运行记录,这里可能需要手工添加这一条记录,以跳过执行初始化的语句)
注意:
1.如果出现表已经存在的错误 ,有可能是上一步中的记录没有写到south_migration表中去,一定要检查这里
2.如果出现类似什么GhostExcepion的错误,有可能是你手动删除了生成的py文件,这时还需要删除对应的表记录