一尘不染

如何在Django 1.7中重置迁移

django

(我知道有一个与此标题相同的标题,但问题有所不同)。

我设法使开发机器迁移和生产迁移不同步。

我有一个使用South的Django应用。我有自己的工作流程,效果很好(这可能不是正确的处理方式,但我没有任何问题)。

基本上,我有一个脚本,可将生产数据库转储复制到我的开发计算机上。它还复制了迁移文件。这样,两者就同步了,我可以像往常一样运行South命令。

现在,我已升级到1.7,并开始使用迁移。当我使用以前的工作流程(从生产环境复制数据库转储和迁移文件)时,它没有检测到开发计算机上的更改。

我已经阅读了迁移文档,并且看到使用它的正确方法是:

  1. 在我的开发计算机上运行“进行迁移”和“迁移”。
  2. 在我的devlopemnt机器上运行“ migrate”以实际进行数据库更改
  3. 复制更改,包括迁移文件。
  4. 在生产机器上运行“迁移”。(没有“ makemigrations”步骤)
    无论如何。现在都一团糟。我想“重置”我的迁移并从头开始,从现在开始做正确的事情。

我需要做什么?

  1. 删除迁移表的内容(在两台计算机上)?
  2. 删除迁移文件夹的内容?(包括init .py文件)。
  3. 按照文档中的说明开始新的迁移。
    我错过了什么吗?为什么从生产中复制所有内容(数据库和迁移文件)之后没有在我的开发计算机上检测到任何更改,这是有原因的

阅读 400

收藏
2020-03-31

共1个答案

一尘不染

我将在两种环境下都执行以下操作(只要代码相同)

  1. 删除你的迁移文件夹
  2. django_migrations WHERE app =中删除<your app name>。你也可以截断该表。
  3. python manage.py makemigrations
  4. python manage.py migrate --fake

在此之后,所有更改都应在整个环境中检测到。

2020-03-31