我正在考虑将 Django 用于我正在启动的项目(仅供参考,一个基于浏览器的游戏),我最喜欢的功能之一是使用syncdb
我定义的 Django 模型自动创建数据库表(a我似乎在任何其他框架中都找不到的功能)。当我在文档中看到这一点时,我已经认为这太好了,难以置信:
Syncdb 不会改变现有的表
syncdb 只会为尚未安装的模型创建表。它永远不会发出 ALTER TABLE 语句来匹配安装后对模型类所做的更改。对模型类和数据库模式的更改通常涉及某种形式的歧义,在这些情况下,Django 必须猜测要做出的正确更改。在此过程中存在丢失关键数据的风险。
如果您对模型进行了更改并希望更改数据库表以匹配,请使用 sql 命令显示新的 SQL 结构并将其与现有表模式进行比较以计算出更改。
似乎必须“手动”更改现有表。
我想知道的是最好的方法。想到了两个解决方案:
- 正如文档所建议的,在数据库中手动进行更改;
- 备份数据库,擦除它,再次创建表(使用syncdb,因为现在它正在从头开始创建表)并导入备份的数据(如果数据库很大,这可能需要太长时间)
有任何想法吗?