我正在使用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 :(得分:4)
在这种情况下,迁移失败并且没有写入db,因此您可以安全地删除旧的并再次创建。您也可以尝试使用较新的南版本,我相信他们在创建步骤时添加了NOT NULL字段的默认检查。