在Django中更改模型导致数据库损坏?
我在我的models.py文件中添加和删除了一些字段,然后运行了manage.py syncdb。通常我需要退出命令行界面,然后重新启动它,才能让syncdb生效。即使这样做了,我在尝试访问管理页面时还是遇到了错误,似乎我添加的一些新字段在模型中仍然没有显示出来:
Caught an exception while rendering: no such column: mySite_book.Title
3 个回答
2
为了进一步说明@Barthelemy的回答,这里有几个关于Django的迁移工具:
- South
- Deseb
- django-evolution
- dmigrations(仅限MySQL)
- nashvegas
- yadsel
4
对我来说,只要你是在测试数据上操作,而不是在正式环境中,这样做会简单很多。你可以直接删除 test.db 文件,然后再运行 ./manage.py syncdb 来重新创建数据库。这只是给你的一点建议...
9
Django不会自动帮你处理数据库的迁移,也就是说,如果你添加了新的字段,Django不会去修改你的数据库结构。
你可以选择以下几种方法:
- 删除那些有变化的表,然后重新执行syncdb。这种方法在你开发应用的时候比较合理,因为那时候你的数据库里可能没有真实的数据。
- 使用像South这样的迁移工具,它可以帮你进行数据库的迁移(就像hibernate的更新脚本)。
- 手动编辑数据库,添加或删除之前存在的表中的相应字段。