我个人喜欢 django,因为它的 MVC 理念。但是,当我在版本 1.7 中运行 Django 迁移时,我在其中执行的每个迁移都存储在迁移目录中。如果我删除这些文件,它会在迁移时抛出错误。
我是这样测试的。我创建了一个新的 Django 项目并启动了一个 git repo 。我在 Django 中运行了一些 3-4 次迁移,结果是
migrations目录下有3-4个迁移文件。我尝试删除非常旧的迁移文件,即(第一个和第二个迁移文件)并尝试运行
python manage.py makemigrations
这确实会导致一些错误,例如“找不到迁移文件”。后来我做了一个 git stash 来恢复已删除的文件。现在我尝试再次运行相同的命令,并且运行良好。
我的问题是,如果一个人在开发过程中在数据库中运行大约 50 个更改,所有迁移文件都存储在迁移目录中。是否可以删除这些文件并再次对数据库进行更改而不会造成任何中断?
答案是“这取决于”。
如果您正在处理生产数据库,或者某些由于某种原因无法定期消失的数据库,那么您绝对希望保留已应用于数据库的迁移文件。应将它们与代码的其余部分一起检查到源代码管理中。
现在,对于像您这样的情况,放弃 50 次迁移的最简单方法就是删除数据库(这是 50 次迁移)并根据您当前的模型从头开始。在开发过程中改进模型时定期执行此操作通常是一个好主意。
当你摧毁你的数据库时,摧毁你的模型是可以的,因为syncdb将使用你当前的模型构建一个空白数据库。然后,它会选择使用任何初始固定装置填充数据库。从概念上讲,此时您不再迁移任何内容,因此您无需保留旧数据库的旧迁移。它们不再相关。
删除已应用于数据库的迁移文件通常不好,除非您 1) 完全删除数据库,或 2) 首先恢复迁移。
您可能还会喜欢知道,当您将迁移应用于数据库时,它还会将这些迁移记录在数据库本身的特殊表中。这就是当您删除迁移文件时事情会变得混乱的原因。他们必须与迁移表保持同步
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)