我正在考虑使用Django作为我开始的项目(fyi,基于浏览器的游戏),我最喜欢的功能之一是使用syncdb
自动创建数据库表基于我定义的Django模型(我似乎无法在其他任何框架中找到的功能)。 我已经想这是好得是真实的,当我看到这个在documentation:在Django中更改数据库表
执行syncdb不会改变现有的表
执行syncdb只会创造尚未安装哪些车型表。它永远不会发出ALTER TABLE语句来匹配安装后对模型类所做的更改。更改模型类和数据库架构往往涉及某种形式的模糊,在这种情况下,Django的必须在正确的变化作出猜测。在这个过程中,关键数据可能会丢失。
如果您对模型进行了更改并希望更改数据库表以匹配,请使用sql命令显示新的SQL结构并将其与现有表模式进行比较以计算出更改。
似乎改变现有的表格将不得不“手工”完成。
我想知道什么是做到这一点的最好办法。想到两种解决方案:
- 正如文档所述,请在数据库中手动进行更改;
- 执行数据库备份,擦除它,再次创建表(使用syncdb,因为现在它正在从头开始创建表)并导入备份的数据(如果数据库很大,这可能需要很长时间)
有什么想法?
django-evolution似乎工作正常,谢谢!值得指出的是,必须从头开始使用它(它不计算来自现有SQL的必要更改)。 – gatoatigrado 2009-09-07 18:57:17