上线Android项目SQLite出现database disk image is malformed(11)的处理

本文介绍了一种解决Android项目中出现的SQLite文件损坏问题的方法。通过使用sqlite3工具进行检查、导出损坏数据库的数据并重新导入到新数据库中完成修复。

本文用来记录自己遇到的问题,以及解决问题的方法。

刚上线的Android项目出现了database disk image is malformed(11) 第一次碰到这个错误有点懵逼,百度查了一下,原来是sqlite文件损坏了,有很多原因,不知道用户怎么用的就坏了。
官方说明: http://www.sqlite.org/lockingv3.html#how_to_corrupt
英文不太好 就没看下去了
我用的ubuntu系统 windows自己百度吧!实在搞不定可以找我,我可以给你解决,但不一定解决的了呦。
废话不说了 直接说自己的在网上找的方法吧,亲测可以用。


sqlite3安装

sudo apt-get install sqlite3
检查版本
sqlite3 -version

sqlite 文件修复

sqlite my.sqlite3
sqlite> PRAGMA integrity_check;
提示
*** in database main ***
Page 1446: btreeInitPage() returns error code 11
Page 1444: btreeInitPage() returns error code 11
Page 1443: btreeInitPage() returns error code 11
Page 1442: btreeInitPage() returns error code 11

首先导出数据

sqlite3 test.db
sqlite>.output tmp.sql
sqlite>.dump
sqlite>.quit

再导入到另一个新库中

sqlite3 new.db
sqlite>.read tmp.sql
sqlite>.quit

这就完成了整个修复过程,new.db 就可以用来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值