Django 删除了迁移目录

Posted

技术标签:

【中文标题】Django 删除了迁移目录【英文标题】:Django deleted migrations directory 【发布时间】:2016-10-02 20:39:03 【问题描述】:

在我的项目目录中,当我尝试更新我的代码时,我不小心删除了我的应用程序的迁移文件夹,现在我已经修改了模型,当我使用 python manage.py makemigrations 时,我收到以下消息:

Operations to perform:
    Apply all migrations: app_label
Running migrations:
   No migrations to apply.

我在迁移python manage.py makemigrations app_label之前已经运行了这个

【问题讨论】:

你在使用版本控制吗?您可以重置/结帐回到您进行迁移的时间吗? @jonrsharpe 不幸的是,我在 VPS 上,但我仍然没有时间安装 git 服务器,并且我进行了迁移,但是由于某种原因,当我将它们放在服务器上时,它们给了我错误表存在 这就是为什么你要花时间先安装它! @jonrsharpe 好的,现在你的解决方案是什么? 【参考方案1】:

您可以将迁移重置为初始 migrate 之前的状态,然后重新开始。这不会删除数据库中的数据,而是重置您的迁移跟踪。如果您的所有数据库都已迁移到同一级别,那么您可以重新开始迁移跟踪。

这里有一个 *** 问题已经解决了:

How to reset migrations in Django 1.7?

总之,

./manage.py migrate --fake <app-name> zero

这会将跟踪重置到您的初始迁移之前。

然后,

./manage.py makemigrations <app-name>
./manage.py migrate <app-name>

这会重新创建初始迁移并应用它。

与往常一样,如果您的数据很重要,请先进行备份。

【讨论】:

我其实需要数据库里的数据 我已经更新了我的答案。重置迁移不会重置数据库。 运行上面给出的命令后,我收到了这条消息,实际上没有发生任何其他事情Running migrations: Rendering model states... DONE Unapplying app_label.0001_initial... OK 现在抛出这个异常 关系“app_label_something”不存在 您现在应该可以像开始时一样继续操作了。【参考方案2】:

只需在您的应用目录中创建名为迁移的新目录。 然后在该文件夹中创建一个名为__pycache__ 的空文件夹和一个名为__init__.py 的空文件。然后进行迁移并迁移

【讨论】:

以上是关于Django 删除了迁移目录的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.7 迁移不会重新创建删除的表,为啥?

Django 1.8:删除迁移文件夹后未检测到迁移

我不小心删除了 Django 中的迁移文件夹

如何在压缩它们后删除 django 迁移?

Django 删除了 DDBB 表,不能再迁移:没有这样的表错误

如何将 Django 项目迁移到 Pythonanywhere