2014-03-12 38 views
8

我有一個應用程序構建瓶,我想今天爲它創建一個新的遷移。當我運行alembic修訂版 - 多頭(由於分支)錯誤

$ 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 

給出什麼

我是新來瓶&蒸餾器。有2個開發人員在這個應用程序工作,我們有2個git分支 - 主&開發(我不知道這是否與它有任何關係)。

關於這是什麼的任何線索?

回答

4

我已經運行

$ python manage.py db history 

而作爲一個結果我得到了

[email protected]:/vagrant$ python manage.py db history 

Rev: 29c319804087 (head) 
Parent: 313837798149 
Path: migrations/versions/29c319804087_.py 

    empty message 

    Revision ID: 29c319804087 
    Revises: 313837798149 
    Create Date: 2014-03-05 21:26:32.538027 

Rev: 313837798149 
Parent: 280061454d2a 
Path: migrations/versions/313837798149_.py 

    empty message 

    Revision ID: 313837798149 
    Revises: 280061454d2a 
    Create Date: 2014-01-10 03:19:39.838932 

Rev: 280061454d2a 
Parent: None 
Path: migrations/versions/280061454d2a_.py 

    empty message 

    Revision ID: 280061454d2a 
    Revises: None 
    Create Date: 2013-12-08 03:04:55.885033 


Rev: 2e74f61d3b80 (head) 
Parent: 49501407aec9 
Path: migrations/versions/2e74f61d3b80_o2_lease.py 

    o2 lease 

    Revision ID: 2e74f61d3b80 
    Revises: 49501407aec9 
    Create Date: 2014-02-28 10:38:06.187420 

Rev: 49501407aec9 
Parent: None 
Path: migrations/versions/49501407aec9_.py 

    empty message 

    Revision ID: 49501407aec9 
    Revises: None 
    Create Date: 2014-01-22 11:27:08.002187 

什麼,你可以在這裏看到的是兩個不同的分支。一個從49501407aec9開始,另一個從280061454d2a開始。我搬到49501407aec9及以下2e74f61d3b80出/版本目錄,運行

$ python manage.py db revision 

,它創造了一個新的遷移文件。

9

當兩個alembic遷移從同一個遷移分支時,會發生此問題。通常情況下,這是在多人進行模式更改時發生的。要修復它,你只需要調整你的遷移的down_revision是最新的。運行alembic history向我們展示了這一點:

2f4682466279 -> f34e92e9dc54 (head), Fifth revision (on a separate branch) 
 
2f4682466279 -> f673ac37b34a (head), Fifth revision (local) 
 
2dc9337c3987 -> 2f4682466279, Fourth revision 
 
0fa2aed0866a -> 2dc9337c3987, Third revision 
 
22af4a75cf06 -> 0fa2aed0866a, Second revision 
 
9a8942e953eb -> 22af4a75cf06, First revision

你可以看到,第五版本之一是本地生產的,它的下游修訂2f4682466279但誰提出的其他第五次修訂得到了相同的下游修訂過。

走進了第五次修訂的一個文件,並更新down_revision變量引用其他第五次修訂,是這樣的:

f673ac37b34a -> f34e92e9dc54 (head), Fifth revision (on a separate branch) 
 
2f4682466279 -> f673ac37b34a, Fifth revision (local) 
 
2dc9337c3987 -> 2f4682466279, Fourth revision 
 
0fa2aed0866a -> 2dc9337c3987, Third revision 
 
22af4a75cf06 -> 0fa2aed0866a, Second revision 
 
9a8942e953eb -> 22af4a75cf06, First revision

在這種情況下,我更新遷移f34e92e9dc54down_revision='f673ac37b34a'