Я пытаюсь заменить базовую версию Alembi c в приложении Flask. Причина в том, что ревизии Alembi c не были созданы правильно для этого проекта, и я хочу сделать их в правильном порядке от начальной базы данных до последней версии. Для этого мне пришлось создать первоначальную ревизию и заменить ее текущей базовой ревизией в дереве. Вот как дерево выглядело до каких-либо изменений:
>> alembic history
20b081e106eb -> f6b6d50b4012 (head), revision 6
604059d119b3 -> 1f6f72cb12a9, revision 5
fa56f5d34a18 -> 604059d119b3, revision 4
4e8f28c411ea -> fa56f5d34a18, revision 3
8494e6010c15 -> 4e8f28c411ea, revision 2
37b8265891db -> 8494e6010c15, revision 1
<base> -> 37b8265891db, previous base
Я изменил down_revision
для сгенерированной ревизии на None
и установил down_revision
для предыдущей базы на сгенерированную revision_ID
, Когда я проверяю историю, я вижу, что все в порядке, и моя новая базовая ревизия заменяется предыдущей, а предыдущая база пересматривает сгенерированную базу:
>> alembic history
20b081e106eb -> f6b6d50b4012 (head), revision 6
604059d119b3 -> 1f6f72cb12a9, revision 5
fa56f5d34a18 -> 604059d119b3, revision 4
4e8f28c411ea -> fa56f5d34a18, revision 3
8494e6010c15 -> 4e8f28c411ea, revision 2
37b8265891db -> 8494e6010c15, revision 1
47f0eb12e6b5 -> 37b8265891db, previous base
<base> -> 47f0eb12e6b5, initial database (new)
Теперь, когда я запускаю alembic upgrade head
, Я получаю эту ошибку:
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/script/base.py", line 329, in _upgrade_revs
revs = list(revs)
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/script/revision.py", line 652, in _iterate_revisions
uppers = util.dedupe_tuple(self.get_revisions(upper))
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/script/revision.py", line 300, in get_revisions
resolved_id, branch_label = self._resolve_revision_number(id_)
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/script/revision.py", line 433, in _resolve_revision_number
self._revision_map
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/util/langhelpers.py", line 240, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "/export/content/lid/apps/sec-assistant/dev-i001/libexec/sec-assistant_5a281323-d247-4339-afcf-79b88f9fab38/site-packages/alembic/script/revision.py", line 151, in _revision_map
down_revision = map_[downrev]
KeyError: '47f0eb12e6b5'
Есть ли способ исправить это, не удаляя и не регенерируя все ревизии от базы к голове?