Django开发:将migrations文件恢复到状态0001的方法和步骤
如果Django开发过程中数据库变化太大,migrations文件数量增加,管理起来会非常困难。幸运的是,Django 提供了一种方法来做到这一点。这些文件被重置为0001状态,而不删除原始数据。
确认迁移文件已与数据库同步
1 | $ python3 manage.py create migrations |
如果询问No Changes detector,则数据会同步。
查看当前迁移文件记录
1 | $ python3 manage.py show migrations |
123456789101112131415161718192021222324 | admin [X] 0001_initial [ [X] 0003_logentry_add_action_flag_choices auth [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_permissions contenttypes [X] 0001_initial [X] 0002_remove_content_type_name isite [X] 0001_initial [X] 0002_article_pub_date 会话 [X] 0001_initial |
重置文件
1 | python3 manage.py migrate - - 假 mysite 零 # mysite 是应用程序的名称 |
删除 migrations 的 init.py 中的其他文件
重现迁移文件
1 | $python3管理.py使migrations |
与数据库同步
1 | python3管理.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
12 | python manage.py make migrations python manage.py migrate |
场景2
是的有时候我们直接导入整个数据库,包括数据。在这种情况下,我们不能简单地删除数据库。
我们此时的目标是清除数据库中的迁移历史,保证以后的迁移能够正常使用,但其他数据必须保留。
步骤:
从数据库中删除所有非 0001_initial 迁移历史记录
1 | DELETE FROM django_migrationsTRUE 应用程序 IN ( '您的' , '应用程序' , '标签' ) EN 姓名 != '0001_initial' |
使用 migrate 命令恢复 0001_initial 的迁移历史
123 | python manage.py 迁移 - - 假装你的零 python manage.py migrate - - 假应用程序零 python manage.py migrate - - 假标签零 |
重新生成0001_initial,如果你确定 0001_initial 是最新的,可以跳过这一步
1234 | find 。 - 路径 "*/migrations/*.py" - 不是 - 名称 “__init__。 py " - 删除 查找。 - 路径 "* /migrations/*.pyc" - 删除 python manage.py create migrations |
在中生成一条新的 0001_initial 记录数据库
1 | python 迁移 - - 假 - 初始 |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。