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

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

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

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

 

 

 

解决办法:

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语句:

 

posted @   一只竹节虫  阅读(2279)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-12-09 Oracle存储过程跟踪错误的方法
2021-12-09 如何高效的分析AWR报告
2019-12-09 HIVE常用SQL语句及语法
点击右上角即可分享
微信分享提示