python - 替换 Alembic 基本修订会引发 KeyError
问题描述
我正在尝试替换 Flask 应用程序中的 Alembic 基本版本。原因是没有为这个项目正确创建 Alembic 修订版,我想按照正确的顺序从初始数据库到最新版本。为此,我必须创建一个初始修订版并将其替换为树中的当前基本修订版。这是树在进行任何更改之前的样子:
>> 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'
有什么方法可以解决这个问题,而无需删除并重新生成从基础到头部的所有修订?
解决方案
推荐阅读
- php - 我们如何反序列化从数据库中检索的 WordPress 复杂嵌套对象字符串
- r - 更新 R 中数据框中的特定变量
- flutter - 如何在 Flutter 中创建自定义下拉框
- python - sqlalchemy OverflowError:太大而无法使用 dataframe.to_sql 进行转换
- java - Hibernate JPA - Wildfly 启动时未检测到实体
- javascript - 反应测试类型错误:无法读取未定义的属性“地图”
- reactjs - 在 React 中将 index 设置为 key 应该会破坏 UI,但它不会
- javascript - npm 错误:cb() 从未调用,我该怎么办?
- deep-learning - 修剪模型后删除 Pytorch 中的 weight_orig
- arrays - 如何从 .dat 文件中打印所有列元素以获取大量数据(~10,000)