如何完全重置损坏的Flask-SQLAlchemy SQLite数据库及Flask-Migrate版本记录
Flask-Migrate 数据库与迁移记录规范重置方案
当你在开发阶段中途修改模型导致迁移流程异常、SQLite 数据库实例损坏时,可以按照以下规范步骤完成完全重置,相比手动零散删除文件更可控,不会残留无效记录:
操作步骤
- 第一步:停止所有运行中的 Flask 应用进程,避免 SQLite 被占用导致文件删除/修改失败
- 第二步:删除损坏的 SQLite 数据库文件,默认通常为
app.db,连带同目录下的.db-wal、.db-shm临时缓存文件也一并删除 - 第三步:清理历史迁移记录
- 如果你没有手动修改过迁移脚本的自定义逻辑,可以直接删除整个
migrations目录 - 如果你保留了迁移脚本中的自定义修改,仅删除
migrations/versions目录下的所有.py迁移版本文件即可
- 如果你没有手动修改过迁移脚本的自定义逻辑,可以直接删除整个
- 第四步:(仅当你删除了整个
migrations目录时执行)重新初始化迁移环境:flask db init - 第五步:基于当前最新的模型代码生成全新的初始迁移脚本:
flask db migrate -m "initial migration" - 第六步:执行迁移生成干净的新数据库:
flask db upgrade
额外优化提示
如果只是迁移版本记录和数据库实际状态不同步,不需要删库重置的场景,可以直接执行flask db stamp head命令,将当前数据库的版本标记为最新迁移版本,无需执行升级操作即可解决版本不匹配问题。
注意:这套方案仅适用于本地开发测试环境,生产环境操作前必须先完成全量数据备份,禁止直接执行重置操作。
内容的提问来源于stack exchange,提问作者EasY
相关产品推荐
相关产品推荐

