2011-01-27 34 views
2

我正在使用South(版本0.6,Ubuntu Lucid Lynx打包的版本)来管理Django中的数据库迁移,目前使用SQLite作为后端。我遇到了一种情况,我生成了一个移动列添加:如何从南方失败的迁移中恢复?

./manage.py startmigration myapp --auto added_new_column 

......它产生了一个看起来合理的迁移。然而,当我再与应用迁移:

./manage.py migrate myapp 

我得到一个错误,因为我加入柱非NULL,但我没有指定一个默认值:

ValueError: You cannot add a null=False column without a default value. 

什么是否应该这样做,如果迁移以这种方式失败,并且您想要回去并重新生成它? (我在实践中做了什么,即删除迁移并生成新迁移,这又造成了一些进一步的问题。)或许我错过了有关此文档的明显内容......

+0

您可以使用`migrate app --list`来查看您正在使用哪种迁移 – 2011-01-27 10:08:25

回答

4

在这种情况下,迁移失败并没有写入数据库,所以你可以安全地删除旧的并重新创建。您也可以尝试使用较新的南方版本,我相信他们在创建步骤时添加了对NOT NULL字段的默认检查。

+0

谢谢 - 我认为`startmigration myapp --auto`已经影响了db,但我想这实际上是由后来完成的我尝试过的步骤。 – 2011-01-27 12:39:24