已删除的迁移文件-如何在不丢失数据的情况下进行迁移

Deleted migration files- how to makemigrations without losing data

我更改了模型class上的一个字段(它没有classes指向它,只有一个外键指向它) .不知何故,这塞满了我的迁移,它一直说 "django.db.migrations.graph.NodeNotFoundError:" 正在寻找不存在的迁移文件。

我不小心删除了 'migrations' 文件夹中的几个文件。

我的数据库包含很多数据,我不想破坏它。

如果我这样做,我会丢失任何数据吗:

  1. 去掉最开始引起问题的table(psql,\d,DROP TABLEtablename)

  2. 删除我所有的迁移文件

  3. 回复运行迁移从何开始?

    ./manage.py makemigrations

    ./manage.py 迁移

谁能推荐另一种解决方法?

这是回溯: http://dpaste.com/0Y1YDXS

您不是在使用 git 来取回您的迁移文件吗?如果没有,立即开始​​安装并使用它

我建议:

  1. 先backup/dump你的数据库,以防出现问题
  2. 删除所有迁移
  3. psql 中的空迁移table
  4. 致电makemigrations
  5. 致电migrate --fake-initial
  1. 清空 django_migrations table:

    delete from django_migrations;
    
  2. 删除项目中每个应用程序的迁移文件夹中的所有文件。

  3. 重置 "built-in" 应用程序的迁移:

    python manage.py migrate --fake
    
  4. 为每个应用程序创建初始迁移:

    python manage.py makemigrations your_app_name
    
  5. 最后一步是创建假初始迁移:

    python manage.py migrate --fake-initial
    

看这里https://micropyramid.com/blog/how-to-create-initial-django-migrations-for-existing-schema/