【问题标题】:Conflicts in in migration files while doing makemigrations执行 makemigrations 时迁移文件中的冲突
【发布时间】:2020-10-02 12:07:12
【问题描述】:

我有 3 个 django 实例在 live dev/live/production 上运行。现在,由于一些同事的工作,我因 diff 分支而出现冲突错误(我有 6 个分支,所以有些分支的迁移文件略有不同,并且在拉取请求时会造成混乱)。我发现的唯一解决方案是重置迁移。之后,我删除了除 init file 之外的所有迁移。现在我正在考虑将迁移添加到 gitignore 文件中,因为它会节省更多的冲突,因为我的同事是新同事并且会弄得一团糟。我每次都没有太多时间去修复。那么问题是这样做有什么问题吗?还是在不久的将来有害?

【问题讨论】:

  • 可能不通过 git 合并迁移,而是使用 makemigrations --merge?如果您有一些使用 RunPython 的迁移 - 将其包含在 gitignore 是个坏主意。
  • @ncopiy --merge 没有解决问题。
  • 为什么这是个坏主意?
  • 例如。您的一些同事决定更新 RunPython 函数中的某些字段。例如,将User 模型的username 字段中的所有- 替换为_。如果您不将该迁移包含到您的 repo 文件中,您将不会更新生产中的所有用户名。也没有关于构建应用程序的信息。我们不知道您如何创建开发/产品版本。我们不知道你有什么冲突由于 git merge 等。所以没有上下文就没有办法给你正确的答案。
  • @gamer 无论如何没有足够的信息来解决您的问题

标签: django django-models django-migrations


【解决方案1】:

所以在做了这么多搜索之后,我有几点要说。

第 1 次: 始终通过迁移使所有分支保持最新状态。从github拉后做

./manage.py makemigrations --merge

第二次:不要删除迁移,除非它非常混乱。尝试通过自定义编辑检查错误来解决。

第三:让您的实时服务器与迁移保持同步。不要单独创建

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2013-06-02
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2021-10-28
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多