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

时间:2016-01-21 09:22:05

标签: django postgresql django-models django-migrations

我在模型类上更改了一个字段(没有类将指向它,只有一个外键指向它)。不知怎的,这填补了我的迁移,它一直在说“django.db.migrations.graph.NodeNotFoundError:”寻找不存在的迁移文件。

我在“迁移”文件夹中意外删除了多个文件。

我的数据库包含大量数据,我不想破解它。

如果我:

,我会丢失任何数据吗?
  1. 首先删除导致问题的表(psql,\ d,DROP TABLE tablename)

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

  3. 从一开始就重新开始迁移?

    ./ manage.py makemigrations

    ./ manage.py migrate

  4. 有人可以推荐另一种解决方法吗?

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

2 个答案:

答案 0 :(得分:2)

您是否使用git以便可以恢复迁移文件?如果没有,安装并使用它,从现在开始

我建议:

  1. 首先备份/转储您的数据库,以防出现问题
  2. 删除所有迁移
  3. psql中的空迁移表
  4. 致电makemigrations
  5. 致电migrate --fake-initial

答案 1 :(得分:0)

  1. 清空django_migrations表:

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

  3. 重置“内置”应用的迁移:

    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/