zoukankan      html  css  js  c++  java
  • Django开发—如何重置migration

    情景一:不需要原有的数据库数据

    删除数据库所有的表
    删除项目的migration模块中的所有 文件,除了init.py 文件
    执行脚本
    python3 manage.py makemigrations
    python3 manage.py migrate
    情景2:不想要删除现有的数据库,只是想重新建立 migration 文件
    首先要保证,目前的migration文件和数据库是同步的,通过执行

    python3 manage.py makemigrations
    如果看到 这样的提示: No changes detected,则可以继续接下来的步骤

    • 通过执行

    python3 manage.py showmigrations
    结果,可以看到当前项目,所有的app及对应的已经生效的migration文件如

    git_hook
    [X] 0001_initial
    guardian
    [X] 0001_initial
    kombu_transport_django
    [X] 0001_initial
    message
    (no migrations)
    order
    [X] 0001_initial
    pay
    [X] 0001_initial
    [x] 0002_add_model
    sessions
    [X] 0001_initial

    • 通过执行

    $ python3 manage.py migrate –fake pay zero

    这里的 pay就是你要重置的app
    之后再执行 python manage.pu showmigrations,你会发现 文件前的 [x] 变成了[ ]

    • 现在,删除pay 这个 app下的migrations模块中 除 init.py 之外的所有文件。
    • 通过执行

    $ python3 manage.py makemigrations

    程序会再次为这个app 生成 0001_initial.py 之类的文件

    • 通过执行

    python3 manage.py migrate –fake-initial

    –fake-initial 会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的 代码。
    这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,妈妈再也不用在 migration模块中看到一推文件了。

    • 特别补充,查看相关步骤的sql语句:

    python3 manage.py sqlmigrate appname 0001

  • 相关阅读:
    Sales Portal遇到问题及解决
    LYOA 遇到的问题及解决方案
    ERS遇到的问题及solution
    ehr遇到问题及解决方法
    dropdownlist中的Checkbox,可控制是否postback
    javascirpt
    【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
    SpringBoot2.1整合finereport10(帆软报表)
    Windows下MyCat配置MySql读写分离
    Windows下MySQL主从同步
  • 原文地址:https://www.cnblogs.com/floodwater/p/9988786.html
Copyright © 2011-2022 走看看