Sqlite数据库的恢复
当用程序查询一个Sqlite3数据库时,如果出现
database disk image is malformed
则说明sqlite数据库的某个表中有一部分记录有问题,导致无法select,update或者delete
但出现这种错误的时候,insert是可以进行的
似乎Sqlite3本身并没有提供任何的恢复机制
但通过Sqlite3提供的命令行工具,应该是能恢复其中的正常数据的
以下是操作步骤:
首先从损坏的数据库中dump数据库
sqlite3 Maildir.sqlite3
SQLite version 3.5.6
Enter ".help" for instructions
sqlite> .tables
folders mails
sqlite> select count(*) from mails;
SQL error: database disk image is malformed
sqlite> .output data.sql
sqlite> .dump
然后新建一个sqlite库,并导入刚才的数据库
sqlite3 new.sqlite3
sqlite> .read data.sql
sqlite> .tables
folders mails
sqlite> select count(*) from mails;
25
更简单的一个shell脚本命令: