我已经成为Django的用户大约2年了,并且有一个我一直害怕使用的功能:伪造迁移.
我几乎到处都看了,我能得到的最多信息来自文档,其中说明:
- 假
告诉Django将迁移标记为已应用或未应用,但没有实际运行SQL来更改数据库架构.
这适用于高级用户在手动应用更改时直接操作当前迁移状态; 请注意,使用--fake会冒着将迁移状态表置于需要手动恢复以使迁移正确运行的状态的风险.
--fake-初始
如果所有具有该迁移中所有CreateModel操作创建的模型名称的数据库表已存在,则允许Django跳过应用程序的初始迁移.此选项适用于首次针对预先存在使用迁移的数据库运行迁移时使用.但是,此选项不会检查匹配的表名称之外的匹配数据库模式,因此只有在您确信现有模式与初始迁移中记录的模式匹配时才可以安全使用.
我得到了一般的想法以及为什么人们想要使用这个功能.但是,我不明白它所说的部分仅适用于高级用户.
有人可以解释幕后发生的事情以及为什么需要手动恢复.
注意
我不是在寻找伪造迁移时运行的确切原始SQL查询.我只是在寻找关于场景背后发生的事情的一般概念,也许是为什么伪造迁移会导致状态makemigrations无法正常工作的一个例子.