相关博文原址:http://www.cnblogs.com/iguor/archive/2012/08/23/2653442.html 最近被sqlite数据损坏的问题折磨的不行,今天终于找到解决方法了,先开心一小下database 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
.quit step3: 由于损坏的数据库dump成sql之后,最后一行变成了ROLLBACK;这里我又去找了一种软件叫做 “emeditor”,用emeditor把ROLLBACK;改成COMMIT; step4::好了,现在可以读取数据到新的db了,在cmd界面输入:
sqlite3 new.db
.read tmp.sql
.quit
database disk image is malformed问题的解决" title="sqlite关于The database disk image is malformed问题的解决" style="border: 0px; list-style: none;">问题解决了,new.db中就是恢复好的数据了,有点小不爽的是里面的数据都是重复的database 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;
|