我可以删除迁移目录中的django迁移文件吗

萨沙娅

我个人喜欢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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

卡在django迁移IntegrityError循环中:我可以删除数据库中尚未存在的那些迁移吗?

我可以删除所有迁移文件并从头开始吗?

Django 1.7 + Django CMS-从我的仓库中删除迁移文件还是在仓库中包含virtualenv?

如何删除Django迁移文件?

我应该在.gitignore文件中添加Django迁移文件吗?

在Django中,是否可以迁移任何垂直特定的文件?

我可以从Lubuntu迁移到LXLE吗?

删除的Django迁移文件夹

Knex.js:我可以将多个迁移保存在一个迁移表中吗?

迁移文件必须在Sequelize中吗?

如果我不删除下载到Lambda函数的/ tmp目录中的文件,可以吗

在Django 2.2上迁移到PostgreSQL后,是否要从目录中删除SQLite数据库?

从 GCC 3.4.3 迁移到 GCC 8.2 时,我可以保留现有的 C 文件吗?

我可以将LUKS分区从密码短语迁移到密钥文件吗?

我可以从构建中排除迁移创建的Designer.cs文件吗?

核心数据迁移-我们可以在xcode中使用多个.xcmappingmodel文件吗?

您可以使用 foreignIdFor() 删除迁移中引用的模型吗?

我可以将我的jQuery项目迁移到ReactJS吗?

添加迁移,然后删除迁移文件

迁移到GitLab后可以删除原始存储库吗

在Django中迁移后运行.sql文件

未在 dockerized Django 中创建的迁移文件

我可以使用轻量级迁移来移动层次结构中的关系吗?

我可以在 Heroku、Ruby on Rails 中手动为生产创建迁移吗?

删除飞行中的迁移

我可以从iOS DeviceSupport目录中删除数据吗?

我可以删除 Cassandra 中的数据/系统目录吗?

根目录中的文件奇怪,可以安全删除吗?

我可以使用 AgensGraph 来迁移数据吗?