gpt4 book ai didi

python - alembic 修订 - 多头(由于分支)错误

转载 作者:IT老高 更新时间:2023-10-28 22:20:55 31 4
gpt4 key购买 nike

我有一个应用程序,我想今天为它创建一个新的迁移。当我运行时

$ alembic revision -m "__name__"

我收到一条消息

Only a single head is supported. The script directory has multiple heads (due branching), which must be resolved by manually editing the revision files to form a linear sequence. 
Run `alembic branches` to see the divergence(s).

运行

alembic branches

什么都不做

我是 Alembic 的新手。有 2 个开发人员在开发这个应用程序,我们有 2 个 git 分支 - master 和 develop(我不确定这是否与它有关)。

有什么线索吗?

最佳答案

也许最传统(也是最强大)的解决方案是使用 alembic merge 头。就像在 Git 中有两个分支时,您可以通过 merge 提交将它们重新组合在一起,在 Alembic 中,当您有两个分支时,您可以通过 merge 修订将它们重新组合在一起。

例如,假设我们有一个添加表 A 的修订版 1a6b1a4a0574 和一个添加表 B 的修订版 2e49118db057。我们可以在 中看到这些修订版(都标记为 (head))蒸馏历史:

$ alembic history
<base> -> 2e49118db057 (head), Add table B
<base> -> 1a6b1a4a0574 (head), Add table A

然后我们可以通过运行 alembic merge 头来 merge 它们:

$ alembic merge heads
Generating /Users/markamery/alembictest/alembic/versions/409782f4c459_.py ... done
$ alembic history
2e49118db057, 1a6b1a4a0574 -> 409782f4c459 (head) (mergepoint), empty message
<base> -> 2e49118db057, Add table B
<base> -> 1a6b1a4a0574, Add table A

如果您的某个修订可能已经在某处运行(包括在您的一位同事的开发机器上),那么您可能想要使用 alembic merge 而不是修补 正如此处的其他答案所建议的那样,其中一个修订版本的 down_revision 。修补向下修订的危险在于它可能导致修订永远不会被应用。例如,假设您的同事 Bob 已经 pull 下您的修订版 2e49118db057 的分支并运行 alembic upgrade head,创建表 B。然后您决定修改 2e49118db057 的 down_revision指向 1a6b1a4a0574,Bob 以前从未见过或跑过。 Bob pull 下您的更改,运行 alembic upgrade head,然后...什么也没有发生,因为就 Alembic 而言,他已经在 head 并且不需要运行 1a6b1a4a0574。所以 Bob 最终永远不会得到表 A,而且可能永远不会弄清楚他的数据库为什么会处于损坏状态。

不要破坏 Bob 的数据库 - 改为进行 merge 修订。

关于python - alembic 修订 - 多头(由于分支)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342643/

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