Sqlite数据库出现错误:database disk image is malformed
修复方法如下:
说明:
1.把已损坏的目标数据库LogisDB放在一个简洁些的磁盘文件夹里,比如就放在F:盘下;
F:\>
2.然后由Windows的cmd命令cd引导到该磁盘文件夹路径(就是F:\>盘),并输入 Sqlite3命令来初始化LogisDB,表示接下来进入Sqlite3 的命令行,并准备操作这个既有的LogisDB数据库(我的目的是要从其中提取核心数据);
F:\>sqlite3 LogisDB
3.接下来的思路便是,将已损坏的数据库LogisDB中的核心数据输入到一个 .tmp文件(名称随便取);
sqlite> .output "_LogisDB_Temp.tmp"
4.既然LogisDB的核心的数据已输入到了 .tmp,那么在F盘下可以删除掉这个旧的LogisDB;
5.尽情的 dump,进行修复工作,随后 quit离开一下;
sqlite> .dump
sqlite> .quit
6.再定到到F盘,还是以同样的命令初始化:Sqlite3 LogisDB,它表示新建一个数据库,并准备对它进行操作;
F:\>sqlite3 LogisDB
7.将 .tmp的内容写(read)到该新建的数据库;
sqlite> .read "_LogisDB_Temp.tmp"
8.quit离开就可以了,至此我们摒弃了已损坏的旧数据库,而将其核心数据捞取到了一个崭新的数据库内,而且名称不变。
sqlite> .quit
-----------------------------------------------------------------------------------------
以下是从另一个贴子转过来的,也可以参考一下,而且还附有一张截图!
D:\workspace\ctrguangfa\db>sqlite3 ctrgf.db3
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .output "_abctemp.tmp"
sqlite> .dump
sqlite> .quit
D:\workspace\ctrguangfa\db>sqlite3 abc.db3
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read "_abctemp.tmp"
sqlite> .quit