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语句:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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语句及语法