【问题标题】:I accidentally deleted the migrations folder in Django我不小心删除了 Django 中的迁移文件夹
【发布时间】:2020-06-16 16:24:35
【问题描述】:

我使用 Django 和 Postgre 作为数据库。所以我完成了所有迁移,但后来我不小心删除了编辑器中的迁移文件夹。因此,我在终端中再次执行了“python manage.py makemigrations”,希望可以取回该文件夹,但它回答“未检测到更改”。我应该怎么做才能找回文件夹?只是简单地再次进行迁移是错误的吗? 我尝试创建一个新数据库并重新执行相同的过程,但它仍然显示“未检测到更改。”

非常感谢您的帮助。 :)

【问题讨论】:

  • 你使用哪个 IDE?
  • @kamilyrb 我使用 Microsoft Visual Studio。
  • 你试过选择文件树然后按 ctrl + z
  • FWIW,这就是您使用 版本控制系统 的目的,其次是计算机备份……

标签: django


【解决方案1】:

如果您已删除所有迁移,则必须重置迁移并重新创建。不用担心,您的数据库会很安全。
如果您想在不丢失数据库的情况下修复迁移,请按照以下步骤操作。

首先清除数据库迁移历史记录。

一个。转到python shell python manage.py shell

b.输入from django.db.migrations.recorder import MigrationRecorder

c。输入MigrationRecorder.Migration.objects.all().delete()

其次,重新创建迁移

创建一个新文件夹migrations。 在文件夹中创建一个名为__init__.py 的文件。

运行命令python manage.py makemigrations

应用虚假迁移,以便您的数据库架构和迁移历史同步。

python manage.py migrate --fake

【讨论】:

  • 做了步骤,还是和上次一样。
  • 我收到“未检测到更改”
  • 你检查过你的 django_migrations 表是空的吗?>
  • 我在stackoverflow.com/questions/36153748/…找到了解决方案
【解决方案2】:

我发现this recipe (Scenario 2, to keep the existing development DB) 效果很好。它可以应用于单个应用程序,这可能比一次重置所有应用程序上的迁移更棘手。

【讨论】:

  • 没用。每次都获得“未检测到更改”。我尝试了不同的场景。删除“db.sqlite3”的那个,我不推荐使用,除非你创建一个新的超级用户没有问题,因为它会删除它。
【解决方案3】:

我现在在Django - makemigrations - No changes detected找到了解决方案

解决办法是:

python3 manage.py makemigrations yourAppName

这适用于 ma​​cOS

如果您使用 Windows,可能

py manage.py makemigrations yourAppName

并且“yourAppName”应该是您的应用程序的名称,与示例中的不同,只有当您的应用程序名称实际上是“yourAppName”时,那当然可以。

【讨论】:

    【解决方案4】:

    删除迁移文件夹下的所有内容

    然后输入以下命令

    python manage.py makemigrations

    【讨论】:

      【解决方案5】:

      尝试以下步骤:

      1. 清除pyc缓存:运行python manage.py clear_pyc
      2. 如果旧的迁移文件夹被删除,则创建新的迁移文件夹并在其中创建一个__init__.py 文件
      3. 通过运行python manage.py makemigrations <your-app-name> 再次创建迁移

      就像您将恢复已删除的迁移一样,因为您可以通过运行 python manage.py migrate 来迁移所有内容

      【讨论】:

        猜你喜欢
        • 2015-06-03
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 2015-09-13
        • 1970-01-01
        相关资源
        最近更新 更多