Я работаю над командой, использующей alembic для управления миграциями db. Недавно я снял мастер и попытался запустить alembic upgrade heads
. Я получил следующее сообщение:
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)
.
Единственное, что мне кажется странным, это то, что моя версия abmbic db имеет два значения:
my_postgres=# SELECT * FROM alembic_version;
version_num
--------------
a04c53fd8c74
453d88f67d34
(2 rows)
Единственная ссылка, которую я могу найти в googling исключение, - это исходный код, который я бы не прочитал.
Как могла сложиться такая ситуация? Как его исправить? Что означает "перекрытие"?