最近遇到打开sqlite数据库报"database disk image is malformed"错误,网上Google找的前几个方法都没解决,后找到一个能解决的方法在此记录一下。
//生成sql
sqlite3 data.db .dump > data.sql
//手动检查sql文件,这也是Google前几个方法没提到的,造成后面生成新的数据库为0KB
用编辑器打开刚刚生成的 data.sql 看看文件的最后一行是不是
ROLLBACK; -- due to errors
是则把它删掉,并加上
COMMIT;
如果最后一行是 COMMIT; 则忽略此步骤。
//新建一个数据库,导入sql
sqlite3 new.db < data.sql
//检查
sqlite3 new.db "pragma integrity_check"