Warm tip: This article is reproduced from serverfault.com, please click

其他-如何在Django 1.7中重置迁移

(其他 - How to reset migrations in Django 1.7)

发布于 2015-03-25 10:42:18

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

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

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

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

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

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

  1. 在我的开发机器上运行“进行迁移”和“迁移”。
  2. 在我的devlopemnt机器上运行“ migrate”以实际进行数据库更改
  3. 复制更改,包括迁移文件。
  4. 在生产机器上运行“迁移”。(没有“ makemigrations”步骤)

反正。现在都一团糟。我想“重置”我的迁移并从头开始,从现在开始做正确的事情。

我需要做什么?

  1. 删除迁移表的内容(在两台计算机上)?
  2. 删除迁移文件夹的内容?(包括init .py文件)。
  3. 按照文档中的说明开始新的迁移。

我错过了什么吗?为什么从生产中复制所有内容(数据库和迁移文件)之后没有检测到我的开发机器上的任何更改,这是有原因的吗

Questioner
wobbily_col
Viewed
11
harshil 2015-03-26 05:25:00

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

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

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