Code前端首页关于Code前端联系我们

Django开发:将migrations文件恢复到状态0001的方法和步骤

terry 2年前 (2023-09-24) 阅读数 108 #后端开发

如果Django开发过程中数据库变化太大,migrations文件数量增加,管理起来会非常困难。幸运的是,Django 提供了一种方法来做到这一点。这些文件被重置为0001状态,而不删除原始数据。

确认迁移文件已与数据库同步

1$ python3 manage.py create migrations

如果询问No Changes detector,则数据会同步。

查看当前迁移文件记录

1$ python3 manage.py show migrations
123456789101112131415161718192021222324admin [X] 0001_initial [ [X] 0003_logentry_add_action_flag_choicesauth [X] 0001_initial [ X] 0002_alter_permission_name_max_length [ ] 0003_alter_user_email_max_length [X] 0004_alter_user_username_opts [X] 0005_alter_user_last_login_null [X] 0006_require_contenttypes_0002 [ [ 0009_alter_user_last_name_max_length [X] 0010_alter_group_name_max_length [X] 0011_update_proxy_permissionscontenttypes [X] 0001_initial [X] 0002_remove_content_type_nameisite [X] 0001_initial [X] 0002_article_pub_date会话 [X] 0001_initial

重置文件

1python3 manage.py migrate --假 mysite 零 # mysite 是应用程序的名称

删除 migrations 的 init.py 中的其他文件

重现迁移文件

1 $python3管理.py使migrations

与数据库同步

1python3管理.py迁移--fake-执行初始
1234编辑:应用所有migrations:admin、auth、content types、isite、sessions执行migrations: 应用isite.0001_initial... FAKED

fake表示模仿执行过程,但不适用于为了应用它。事实。

这些更清爽。

场景1

无论数据库信息如何,都可以完全删除数据库。

步骤:

删除 migrations

12 找到的所有内容。 -路径"*/migrations/*.py"-不是 -名称“__init__。 py " -删除查找。 -路径 "*/migrations/*.pyc" -删除

删除数据库

重新生成migrations

12python manage.py make migrationspython manage.py migrate

场景2

是的有时候我们直接导入整个数据库,包括数据。在这种情况下,我们不能简单地删除数据库。

我们此时的目标是清除数据库中的迁移历史,保证以后的迁移能够正常使用,但其他数据必须保留。

步骤:

从数据库中删除所有非 0001_initial 迁移历史记录

1DELETE FROM django_migrationsTRUE应用程序 IN ('您的','应用程序','标签' ) EN 姓名 != '0001_initial'

使用 migrate 命令恢复 0001_initial 的迁移历史

123python manage.py 迁移 - -假装你的零python manage.py migrate --假应用程序零python manage.py migrate --假标签零

重新生成0001_initial,如果你确定 0001_initial 是最新的,可以跳过这一步

1234find 。 -路径"*/migrations/*.py"-不是-名称“__init__。 py " -删除查找。 -路径"* /migrations/*.pyc" -删除python manage.py create migrations

在中生成一条新的 0001_initial 记录数据库

1python 迁移 - --初始

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门