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