Django 1.6 South 无需迁移
我有一个项目,正在使用south来进行数据库迁移。到目前为止,我们对模型做了几次修改,一切都很顺利。刚才我想在其中一个模型里添加一个字段,但在迁移时遇到了一些麻烦。修改模型后,我运行了:
python manage.py schemamigration MyApp --auto
然后输出了这个:
(django_env) C:\Work_Repos\WebWorkspace\Support_Site\supportsite>python manage.py schemamigration MyApp --auto
+ Added field parts_only_notes on MyApp.ProblemTicket
+ Added field hdd_swap on MyApp.ProblemTicket
+ Added field hdd_swap_old_sn on MyApp.ProblemTicket
+ Added field hdd_swap_new_sn on MyApp.ProblemTicket
+ Added field traq_rma on MyApp.ProblemTicket
+ Added field mail_tracking_number on MyApp.ProblemTicket
+ Added field company on MyApp.Person
Created 0004_auto__add_field_problemticket_parts_only_notes__add_field_problemticke.py. You can now apply this migration with: ./manage.py migrate MyApp
看起来还不错。不过,有些字段已经迁移过了,所以它们再次出现有点奇怪。
接着我又运行了:
python manage.py migrate MyApp
结果是这个:
Running migrations for MyApp:
- Nothing to migrate.
- Loading initial data for MyApp.
Installed 0 object(s) from 0 fixture(s)
所以迁移没有完成。现在如果我尝试去管理页面查看这个模型,就会出现找不到列的异常
。
我需要做些什么才能完成迁移呢?
1 个回答
1
看起来你的合作伙伴创建了另一个0004迁移,但相关的.py文件不知怎么就丢失了,不过这个迁移已经应用到数据库中了。这就是为什么你在新的迁移中看到旧的模型(因为它们不在0003迁移里),所以South认为“没有需要迁移的内容”(因为另一个0004迁移已经被应用过了)。
你可以问问你的合作伙伴要丢失的迁移文件,或者删除你新的模型,创建一个新的0004迁移(这可能和你合作伙伴的迁移是一样的),然后再重新添加你的模型,创建一个新的0005迁移并应用它。