2017-02-23 12 views
6

私はdbの移行を管理するためにalembicを使用してチームで働いています。私は最近マスターを引っ張り、alembic upgrade headsを実行しようとしました。私は次のメッセージを受け取りました。alembicの「要求されたリビジョンの重複と他の要求されたリビジョン」を修正するにはどうすればよいですか?

INFO [alembic.runtime.migration] Context impl PostgresqlImpl. 
INFO [alembic.runtime.migration] Will assume transactional DDL. 
ERROR [alembic.util.messaging] Requested revision a04c53fd8c74 overlaps with other requested revisions 453d88f67d34 
    FAILED: Requested revision a04c53fd8c74 overlaps with other requested revisions 453d88f67d34 

alembic downgrade -1を実行しようとしたときに同じメッセージが表示されました。これを実行するとalembic historyが印刷されます。

453d88f67d34 -> a04c53fd8c74 (label_1, label_2) (head), Create such and such tables. 
2f15c778e709, 9NZSZX -> 453d88f67d34 (label_1, label_2) (mergepoint), empty message 
b1861bb8b23f, b8aa3acdf260 -> 2f15c778e709 (label_1, label_2) (mergepoint), Merge heads b18 and b8a 
(...many more old revisions) 

私には完全に良い歴史のようです。 alembic heads報告a04c53fd8c74 (label_1, label_2) (head)。私には奇妙に見える

唯一の事は私のアレンビックバージョンのDBはその中の2つの値を持っているということです。私は例外をグーグルから見つけることができます

my_postgres=# SELECT * FROM alembic_version; 
version_num 
-------------- 
a04c53fd8c74 
453d88f67d34 
(2 rows) 

のみ参照が、私はむしろを通して読んでいないと思いますsource code、です。

はどのようにこのような状況は、およそ来ているだろうか?どのように修正する必要がありますか? 「重なる」とはどういう意味ですか?

答えて

6

私は、データベース内の古いバージョン番号を削除して、それを「固定」。

my_postgres=# DELETE FROM alembic_version WHERE version_num = '453d88f67d34'; 
DELETE 1 
my_postgres=# SELECT * FROM alembic_version; 
version_num 
-------------- 
a04c53fd8c74 
(1 row) 

これで、アップグレードとダウングレードを実行できるようになりました。私の歴史と頭は同じように見えます。しかし、私はまだそれが起こった理由、または微妙に混乱しているいくつかのDB状態があるかどうかはまだ分かりません。誰かがより良い答えを持っていれば投稿してください!これを見つける人のため

0

私が最初にそれを落とすことなく、それ以前のバージョンに私のデータベースを復元しようとしたので、これは同様に私に起こりました。私はあなただけで、これまでデータベースが現在であるべきどんなバージョンのversion_numであなたのalembic_versionテーブル内の1つの行を持つべきであると考えています。

だから私は自分のデータベースを復元し、むしろ現在のバージョン番号を交換するよりも、最初にそれをドロップしなかったとき、それは新しい行を追加しました。それを修正するために、私はalembicテーブルから不正なバージョンを削除しなければなりませんでした(データベースのバージョン番号が最初に削除したはずのもの)。 ...ちょうどAltairの答えにもう少し文脈を与える。

関連する問題