【问题标题】:How to make the initial migration for a DB that diverged from the corresponding models?如何对与相应模型不同的数据库进行初始迁移?
【发布时间】:2019-02-04 19:57:25
【问题描述】:

情况:我正在从事的一个项目出现文件损坏或其他问题。模型是最新版本,但在添加/删除/修改某些列之前必须回滚 SQLite DB。迁移文件全部消失。尝试重新创建迁移会导致初始迁移文件中存在新列,因此我既不能真正迁移(由于表存在)也不能伪造它(因为数据库中缺少列)。

鉴于这些情况,我如何进行与数据库中当前存在的列匹配的初始迁移,以便我可以伪造它,然后进行真正的第二次迁移以使表与模型一致?唯一想到的是手动调整模型以匹配数据库架构,进行初始迁移,伪造它,然后恢复模型的新版本,但我更喜欢自动完成。

【问题讨论】:

    标签: django


    【解决方案1】:

    django inpsectdb 来救援。

    但是首先,学习如何使用git,如果你使用了适当的版本控制,你现在就不会面临这个困难了。

    1. 第一步,将代码添加到版本控制中。

    2. 删除现有模型文件

    3. 使用 inspectdb 从数据库中的表生成一个 models.py。这并不完美,您必须手动编辑文件,并且可能必须手动将其分布在不同的模型文件之间。

    4. 现在删除迁移表的内容

    5. 执行 ./manage.py makemigrations (yourapp)

    6. 做你提到的假迁移

    7. 将生成的 models.py 替换为您当前的 models.py(对该文件的 git checkout 可以很好地解决问题)

    8. 执行一次迁移并再次迁移。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2018-01-17
      • 2016-05-07
      • 2018-09-27
      • 2011-01-30
      相关资源
      最近更新 更多