如何重置SQLDelight数据库至版本1?为何卸载重建无效?
数据库重置迁移版本问题解答
为啥卸载+改sqm文件没用?
- 卸载不一定删干净数据库:不少平台卸载应用时会留尾巴,比如缓存的数据库文件、云备份自动恢复的旧数据,重新装完应用,旧的数据库版本记录还在。
- 迁移框架有版本追踪表:数据库里会专门存一张表记录已经跑过的迁移版本(比如叫
__MigrationHistory这类),哪怕你删了旧的.sqm文件,只要这张表还在,框架就读到之前的版本号28,不会从头跑版本1的迁移。
怎么解决才能从版本1启动?
- 彻底清干净应用数据:卸载后别直接重装,去系统设置里找到应用残留,把缓存和数据全清了(Android在应用详情里点“清除数据”,iOS可以去存储设置确认删掉残留),确保旧数据库被彻底删光。
- 手动改版本记录:如果能直接打开数据库,找到那个版本追踪表,把里面的版本号改成0或者直接删表,这样框架就会认为从来没跑过迁移,从头执行版本1的
.sqm。 - 加强制初始化逻辑:在应用启动代码里加判断,如果数据库存在就直接删掉,再重新创建并执行版本1的迁移,这样不管有没有残留,都能强制从头来。
内容的提问来源于stack exchange,提问作者baard
相关产品推荐
相关产品推荐

