在Django 1.7 1.8 1.9,如何重置迁移

分享于 

4分钟阅读

django

  繁體

如何开始迁移?

从Django 1.7开始,尤其是从Django 1.7开始,尤其是从最新版本的Django开始,迁移很容易。实际上,由于Django 1.7迁移已集成在Django工作流程中,因此迁移是必须的。

使用迁移Django有两个基本的命令


python manage.py makemigrations # create migrations files
python manage.py migrate # apply migrations and create actual database tables

你还可以显示迁移


python manage.py showmigrations #show migrations

如何重置Django迁移?

解决方案很简单,但是取决于你仍然在开发阶段还是在生产阶段,所以详细描述过程:

在开发阶段重置Django迁移


1 )

如果使用像Posgres或MySQL这样的数据库系统,并且有一个名为mydb的数据库,那么首先使用SQL语言删除数据库,


delete mydb;

如果使用的是SQLite,你只需删除SQLite文件通常名为db.sqlite3

2 )

如果使用的是Linux/MAC下的终端,你可以很容易地自动化这个繁琐的过程


find . -path"*/migrations/*.py" -not -name"__init__.py" -delete
find . -path"*/migrations/*.pyc" -delete

3)

将模型同步到Django的新数据库,执行两个迁移命令。


python manage.py makemigrations
python manage.py migrate

如果使用SQLite以外的数据库系统,请确保在删除旧数据库后创建了新数据库。

我们只需要在删除迁移历史记录.Here时保持数据库的安全,即可以在详细步骤中进行操作:

1 )

首先浏览每个应用并通过发出以下命令删除其迁移历史记录


python manage.py migrate --fake myApp zero

Django将不使用针对特定应用程序的以前的迁移(myApp )

2 )


find . -path"*/migrations/*.py" -not -name"__init__.py" -delete
find . -path"*/migrations/*.pyc" -delete

您可以使用以下方法轻松地验证您的迁移:


python manage.py showmigrations

3)

接下来,我们需要再次创建迁移,所以只需执行


python manage.py makemigrations

但是请不要忘记数据库仍然具有属于初始迁移的表,因此我们需要做的是迁移数据库,同时伪造初始迁移,您只需执行即可


python manage.py migrate --fake-initial 

使用Django应用程序重置迁移


首先你需要通过pip安装应用程序


pip install django-reset-migrations

然后在INSTALLED_APPS的settings.py下添加应用程序


INSTALLED_APPS = (
 # ...
 'reset_migrations',
 # ...
)

接下来,你可以从CLI开始使用它


python manage.py reset_migration myApp

你还可以指定多个应用程序进行重置


python manage.py reset_migration myApp myOtherApp

如果不想删除应用程序的迁移文件,只需添加--cached


python manage.py reset_migration myApp myOtherApp --cached