我个人喜欢Django的MVC理想。但是,当我在1.7版中运行Django迁移时,我在其中进行的每个迁移都存储在migrations目录中。如果我删除这些文件,则在迁移时会引发错误。
我这样测试。我创建了一个新的Django项目并启动了git repo。我在Django中进行了3-4次迁移,结果在migrations目录下产生了3-4个迁移文件。我尝试删除非常旧的迁移文件(例如,第一和第二迁移文件),并尝试运行
python manage.py makemigrations
确实会引起一些错误,例如“找不到迁移文件”。后来我做了一个git stash来恢复已删除的文件。现在,我尝试再次运行相同的命令,并且运行正常。
我的问题是,如果一个人在开发过程中在db中进行了约50次更改,则所有迁移文件都存储在migrations目录中。是否可以删除这些文件并再次对db进行更改而不会中断?
答案是“取决于”。
如果您使用的是生产数据库,或者由于某种原因而无法定期删除的某些数据库,那么您绝对希望保留已应用于数据库的迁移文件。应该将它们与其余代码一起检查到源代码控制中。
现在,对于像您这样的情况,丢弃50个迁移的最简单方法是仅销毁数据库(这是50个迁移),并从给定当前模型的情况下从头开始。在开发过程中逐步开发模型时,通常最好定期进行此操作。
在销毁数据库时销毁模型是可以的,因为syncdb将使用当前模型构建空白数据库。然后,它可以选择使用任何初始固定装置来填充数据库。从概念上讲,在这一点上不再需要迁移任何内容,因此您无需为旧数据库保留旧的迁移。它们不再相关。
通常,删除已应用于数据库的迁移文件通常不好,除非您要么1)完全废除了数据库,要么2)首先还原迁移。
您可能还想知道,将迁移应用于数据库时,还将这些迁移记录在数据库本身的特殊表中。这就是为什么当您仅删除迁移文件时事情变得一团糟。他们必须与迁移表保持同步
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句