Django如何重置migration的几种情景
情景一:不需要原有的数据库数据
- 删除数据库所有的表
- 删除项目的migration模块中的所有文件,除了__init__.py文件
- 执行脚本
pythonmanage.pymakemigrations pythonmanage.pymigrate
情景2:不想要删除现有的数据库,只是想重新建立migration文件
首先要保证,目前的migration文件和数据库是同步的,通过执行
pythonmanage.pymakemigrations
如果看到这样的提示:Nochangesdetected,则可以继续接下来的步骤
通过执行
pythonmanage.pyshowmigrations
结果,可以看到当前项目,所有的app及对应的已经生效的migration文件如
git_hook [X]0001_initial guardian [X]0001_initial kombu_transport_django [X]0001_initial message (nomigrations) order [X]0001_initial pay [X]0001_initial [x]0002_add_model sessions [X]0001_initial
通过执行
$pythonmanage.pymigrate--fakepayzero
这里的pay就是你要重置的app
之后再执行pythonmanage.pyshowmigrations,你会发现文件前的[x]变成了[]
现在,你可以删除pay这个app下的migrations模块中除init.py之外的所有文件。
之后,执行
$pythonmanage.pymakemigrations
程序会再次为这个app生成0001_initial.py之类的文件
最重要的一步来了,执行
pythonmanage.pymigrate--fake-inital
–fake-inital会在数据库中的migrations表中记录当前这个app执行到0001_initial.py,但是它不会真的执行该文件中的代码。
这样就做到了,既不对现有的数据库改动,而又可以重置migraion文件,妈妈再也不用在migration模块中看到一推文件了。
参考https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html
到此这篇关于Django如何重置migration的几种情景的文章就介绍到这了,更多相关Django重置migration内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。