SQLite 大家都知道,就不多说了。
有时候数据量大了,或者存储过程中出现异常,数据库就可能会出问题。
这是以前公司产品出现过的问题,导致软件都打不开了,我花了不少时间才解决的,趁现在有空贡献出来。
先下载一个 sqlite3 的命令行工具,下载对应系统版本的 command-line shell
下载完成后解压到一个目录下,顺便把要修复的数据库也放到该目录下。
打开终端(CMD)进入到该目录。
执行以下命令: sqlite3 要修复的数据库名 .output "_temp.tmp" .dump .quit 该命令是将旧数据库的内容提取出来,保存到一个临时文件中。
用编辑器打开刚刚生成临时文件 _temp.tmp 看看文件的最后一行是不是 ROLLBACK; -- due to errors 是则把它删掉,并加上 COMMIT; 如果最后一行是 COMMIT; 则忽略此步骤。
再到终端,输入一下命令: sqlite3 新数据库名 .read "_temp.tmp" .quit 此命令是将旧数据写到新数据库里面。
至此,数据库修复完毕。可能有点小缺陷,数据会丢失一小部分,不过至少大部分数据都还在,数据库也能继续使用了。