gpt4 book ai didi

django和South移民冲突(0007_two ...和0007_one)如何解决?

转载 作者:行者123 更新时间:2023-12-04 03:18:05 25 4
gpt4 key购买 nike

我想在我的django项目中使用south作为迁移工具,但是在多用户方案中使用south时遇到问题:

同时在不同计算机上工作的两个开发人员创建了两个具有相同编号的迁移

第一台PC上的

  • :0007_extend_lizard.py
  • 第二台PC上的
  • :0007_swap_name_adopter.py

  • 在这种情况下,我可以运行 ./manage migrate --merge./manage migrate 0006(回滚),然后再次运行 ./manage migrate。但是,当我想在 models.py中添加新字段并运行 ./manage startmigration southdemo --auto时,south从上一次迁移中获取 models = {}元数据,并且它在第一次迁移中缺少信息。这样的结果是创建迁移0008,并且从第一个0007开始再次创建(!!!)更改。

    解决此问题的最佳方法是什么?

    目前,我正在考虑两种选择:
  • 手动将两个0007迁移合并到一个文件中,然后迁移(但有些必须执行“回滚”)
  • 手动将丢失的models = {}元数据移动到上一次0007迁移,然后0008中的下一个--auto将正常运行。

  • 有什么更好的选择?还是我还缺少其他东西?

    最佳答案

    在执行migrate --merge或回滚和迁移之后,如果您知道最近的迁移现在具有不正确的卡住模型,那么我将创建一个新的无操作迁移,以使卡住的模型保持最新状态。只需运行./manage.py startmigration myapp --empty freeze_noop即可。现在,您下次要自动检测实际迁移时,卡住的模型将是最新的。

    创建no-op迁移似乎有些丑陋,但是对我来说,这比您建议的任何手动历史记录编辑选项都更干净。您可以将无操作迁移视为DVCS中的“合并提交”。

    这个问题应该在this section of the South docs中提到;我已经提交了an issue for it。 (更新:现在是。)

    关于django和South移民冲突(0007_two ...和0007_one)如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1447016/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com