当前位置 : 主页 > 编程语言 > python >

django_migrate&--fake: 迁移回滚/重新执行某一次迁移/伪回滚迁移(不执行相应的sql操

来源:互联网 收集:自由互联 发布时间:2022-06-14
文章目录 ​​migrate--fake: 迁移回滚/重新执行某一次迁移/伪回滚迁移(不执行相应的sql操作,仅修改执行状态标记)​​ ​​模型重置可能遇到的问题​​ ​​细节步骤​​ ​​撤销最近


文章目录

  • ​​migrate&--fake: 迁移回滚/重新执行某一次迁移/伪回滚迁移(不执行相应的sql操作,仅修改执行状态标记)​​
  • ​​模型重置可能遇到的问题​​
  • ​​细节&步骤​​
  • ​​撤销最近一次成功的迁移​​
  • ​​场景实例(当前迁移情况)​​
  • ​​回退效果​​

  • ​​逆向fake​​
  • ​​实操​​
  • ​​migrate 子命令手册​​
  • ​​fake&fake-initial​​


migrate&–fake: 迁移回滚/重新执行某一次迁移/伪回滚迁移(不执行相应的sql操作,仅修改执行状态标记)

  • ​​python - Rolling back to a previous migration in django - Stack Overflow​​

模型重置可能遇到的问题

如果您的其他代码已经引用了需要被重置的模型,这会稍微棘手一些,因为在您执行​​makemigrations​​​的时候,会检查各个代码的依赖等是否正常,如果简单的删除模型,可能导致makemigrations无法完整执行
这样,就需要一步步将所有相关代码都注释掉,等到模型重置后,再将这些代码恢复(撤销屏蔽)
可能出现的地方有(将DRF一同考虑)

  • urls.py
  • serializer.py
  • views.py

可以将这些文件都全部注释掉,模型重置完毕后,再解开注释


细节&步骤

  • 使用​​python manage.py showmigrations <appName>​​查看当前迁移执行情况
  • 回滚前,不要删除已有的migration(回滚要依赖于这些已经执行过的文件
  • 执行回滚命令不建议使用别名(直接使用全拼命令行,保证所有参数都能够正确被manage.py接收到)
  • ​python manage.py migrate <appName> <00xxx(replace it with your target migration file name code>​
  • 重新使用​​showmigrations​​检查撤销情况
  • 删除掉已经被撤销执行的migration.py文件
  • 重新使用​​showmigrations​​检查撤销情况
  • 现在将最新的模型代码进行迁移
  • 执行​​python manage.py makemigrations <appName>​
  • 以及​​python manage.py migrate <appName>​
  • 如果全部成功,那么再次查看数据库(建议使用命令行,可以最及时和准确的查看刚刚迁移完毕的数据库)

撤销最近一次成功的迁移

场景实例(当前迁移情况)

# 执行迁移情况查看(当前的应用(django app)是user应用)
python manage.py showmigrations user

[X] 0013_alter_wordsearchhistory_spelling_and_more
[X] 0014_testforeignkey
[X] 0015_delete_wordstar
[X] 0016_wordstar
[X] 0017_alter_user_signupdate
[X] 0018_user_openid
[ ] 0019_alter_user_openid
  • 现在,想要撤销掉最近一次成功的迁移(0018)
  • 我们需要执行的是​​python manage.py migrate 0017​
  • 类似于git的代码版本控制回滚那样,将指针移动到了​​0017​
 
网友评论