美文网首页Django 学习笔记
Django 更新数据库问题

Django 更新数据库问题

作者: whong736 | 来源:发表于2017-08-29 09:19 被阅读64次

    Django 更新Model 就需要同步数据库,每次出现问题,今天终于找到解决方案,感谢博主:

    http://blog.csdn.net/zhuoxiuwu/article/details/52167599

    Django开发—如何重置migration
    @(Django)[migration]
    情景一:不需要原有的数据库数据
    删除数据库所有的表
    删除项目的migration模块中的所有 文件,除了
    init*.py 文件
    执行脚本 python manage.py makemigrations python manage.py migrate

    情景2:不想要删除现有的数据库,只是想重新建立 migration 文件
    首先要保证,目前的migration文件和数据库是同步的,通过执行
    Python manage.py makemigrations 如果看到 这样的提示: No changes detected,则可以继续接下来的步骤

    通过执行
    python 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

    通过执行
    $ python manage.py migrate –fake pay zero

    这里的 pay就是你要重置的app 之后再执行 python manage.pu showmigrations,你会发现 文件前的 [x] 变成了[ ]
    现在,你可以删除pay 这个 app下的migrations模块中 除 init.py 之外的所有文件。
    之后,执行
    $ python manage.py makemigrations

    程序会再次为这个app 生成 0001_initial.py 之类的文件
    最重要的一步来了, 执行
    python manage.py migrate –fake-inital

    –fake-inital 会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的 代码。 这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,妈妈再也不用在 migration模块中看到一推文件了。
    参考https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

    相关文章

      网友评论

        本文标题:Django 更新数据库问题

        本文链接:https://www.haomeiwen.com/subject/erzndxtx.html