flask: flask db报错:KeyError: '6590ba2c0c5d'
一,报错信息
File "/data/python/flask/panda-sys/venv/lib/python3.10/site-packages/alembic/script/revision.py", line 768, in _resolve_revision_number
self._revision_map
File "/data/python/flask/panda-sys/venv/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 1145, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "/data/python/flask/panda-sys/venv/lib/python3.10/site-packages/alembic/script/revision.py", line 245, in _revision_map
down_revision = map_[downrev]
KeyError: '6590ba2c0c5d'
二,原因:
核心原因:你的 Alembic 迁移脚本版本链断裂了。
当前数据库或某个迁移文件依赖版本号 c259d6320de6,
但在你的 migrations/versions/ 文件夹中找不到对应的脚本文件(提示中的:Revision c259d6320de6 ... is not present)。
三,解决 :
找到包含错误版本id的文件:
$ grep 6590ba2c migrations/versions/*
migrations/versions/d40be757d0e1_add_local_cities_table_and_switch_fk_.py:Revises: 6590ba2c0c5d
migrations/versions/d40be757d0e1_add_local_cities_table_and_switch_fk_.py:down_revision = '6590ba2c0c5d'
编辑文件,
# revision identifiers, used by Alembic.
revision = 'd40be757d0e1'
down_revision = '6590ba2c0c5d'
branch_labels = None
depends_on = None
修改报错的id'6590ba2c0c5d'为None:
效果如下:
# revision identifiers, used by Alembic.
revision = 'd40be757d0e1'
down_revision = None
branch_labels = None
depends_on = None
浙公网安备 33010602011771号