sqlite3数据库提示database disk image is malformed 解决办法

        在嵌入式产品中,用sqlite3进行数据存储是非常常用且有效的方法。

        但是最近在项目中遇到了数据库被损坏的情况,具体表现为使用数据库管理软件打开数据库后,使用sql语句对数据进行处理时,提示 database disk image is malformed ,如下图所示:

使用sqlite3命令行查询数据条数:

 使用SQLite Expert查询数据条数:

解决办法: 

1、使用数据库管理工具进行修复

安装SQLite Expert Professional数据库管理软件,参考:https://blog.csdn.net/fangye945a/article/details/96908513

使用SQLite Expert Professional 打开数据库,点击Database选项页,点击Repair按键进行修复。

选择new file,指定修复完成的数据库目标路径,点击start按钮开始修复,如果数据库比较大,耐心等待即可。

修复完成的数据库如下所示:

2、通过终端命令行对数据库进行修复

1、使用sqlite3命令打开损坏的数据库,将关键数据导出到临时文件。

sqlite3 db20190704_001.db3
sqlite>.output tmp.sql
sqlite> .dump
sqlite> .quit

2、将临时文件导入到新的数据库。

sqlite3 repair.db3
sqlite>.read tmp.sql
sqlite>.quit

若在执行.output tmp.sql时报错,但是数据导出大部分了,使用Notepad++打开临时文件tmp.sql即可看到一条条SQL语句。

按照损坏的数据库表格式创建新的空数据库,将数据库导出到临时文件,比对两个临时文件,即可看到损坏的地方。SQL语句拷贝到新建的临时文件中即可。

打开新生成的数据库,执行步骤2,对手动修改好的临时文件进行读取操作,即可完成修复。

修复完成后,执行SQL语句:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值