jekeyhui99 发表于 2017-8-4 11:41:00

sqlite关于The database disk image is malformed问题的解决

相关博文原址:http://www.cnblogs.com/iguor/archive/2012/08/23/2653442.html 最近被sqlite数据损坏的问题折磨的不行,今天终于找到解决方法了,先开心一小下http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6725EN00SIGG.gifdatabase disk image is malformed问题的解决" title="sqlite关于The database disk image is malformed问题的解决" style="border: 0px; list-style: none;">。 step1:下载一个sqlite3.exe软件step2:开始->运行->cmd       输入:       sqlite3 old.db(注:损坏的db文件)
       .output tmp.sql
       .dump
       .quitstep3: 由于损坏的数据库dump成sql之后,最后一行变成了ROLLBACK;这里我又去找了一种软件叫做      “emeditor”,用emeditor把ROLLBACK;改成COMMIT;step4::好了,现在可以读取数据到新的db了,在cmd界面输入:
       sqlite3 new.db
       .read tmp.sql
       .quit
http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6741EN00SIGG.gifdatabase disk image is malformed问题的解决" title="sqlite关于The database disk image is malformed问题的解决" style="border: 0px; list-style: none;">问题解决了,new.db中就是恢复好的数据了,有点小不爽的是里面的数据都是重复的http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6700EN00SIGG.gifdatabase disk image is malformed问题的解决" title="sqlite关于The database disk image is malformed问题的解决" style="border: 0px; list-style: none;">。
ok,现在可以解决重复记录的问题了,我的方法有点笨,我新建了一个与new结构相同的表new1,然后通过sql语句把new中数据复制到new1中,然后删除new。下面的我用到的sql语句:insert into new1 select distinct * from new;
页: [1]
查看完整版本: sqlite关于The database disk image is malformed问题的解决