我最近在我的某个模型中添加了一个新字段,忘了将相应的列添加到数据库中的表中。我有测试用例测试添加此模型的新实例并更改现有实例。这些测试用例都没有失败。然而,当我尝试使用实时网站更改实例时,我得到了
DatabaseError没有这样的列
我已经尝试过在TestCase中检测到这个错误,但没有运气。
非常感谢任何帮助。
答案 0 :(得分:1)
问题是你(我真的,真的希望)不要使用你的生产数据库进行测试,所以你可以检测到的是你的测试数据库中不存在该列,这可能是(推测)根据您的模型定义从头开始重新创建,而不是从生产数据库中删除该列。
解决此问题的更好方法是使用South之类的迁移工具,并自动执行部署过程,以便在部署新代码时运行迁移。
这仅适用于小型(ish)网站 - 如果您拥有高流量网站,您可能会发现天真地运行迁移会导致痛苦。如果您处于这种情况,您可能会发现David Cramer的write-up on schema changes信息丰富。
答案 1 :(得分:0)
不幸的是,使用syncdb
命令不足以更新数据库。
您可以使用数据库管理系统手动插入字段,也可以使用South等解决方案。
答案 2 :(得分:0)