数据库表(和django迁移)。 DROP和CREATE最终表v / s逐步添加列

时间:2015-06-28 21:02:53

标签: mysql django

据我所知,Django使用迁移文件处理数据库创建,并且对表的任何更改都是使用新迁移文件中的ALTER语句执行的。

我的问题不是django具体:

表上的初始CREATE后跟多个ALTER操作会以任何方式影响表的性能吗?如果在中间阶段插入数据怎么办?

最好是转储最新的架构和数据并执行单个CREATE吗?

我最初认为最好不要将迁移提交到github,因为无论如何它们都是从models.py文件派生的。现在我意识到标准做法是不断更新github上的迁移。有没有理由使用更新的模型文件运行makemigrations这个方法?

1 个答案:

答案 0 :(得分:0)

如果您的代码已经部署并且有一些客户端数据 - 您需要提交迁移...如果您正在使用旧数据库,则同样适用...在其他情况下不要这样做。

但是如果你打算部署你的项目 - 最后一次提交应该是初始迁移。

如果您担心迁移过程中某些用户数据会丢失,您应该检查数据库管理系统的文档......但是几乎在某些情况下会改变表的结构并阻塞读取或写入。

ALTER TABLE without locking the table?