Thursday, January 27, 2011

sqlite3 database disk image is malformed

sqlite3 报错提示: database disk image is malformed

看提示意思是指数据库的数据文件格式发生异常,所以数据查询和写入不正常,在网上google了一些文章,找到了一个解决方法。
一般来说,sqlite3的数据文件发生这个问题,想直接修复数据是行不通了,
在进入sqlite3后的命令行中,运行以下命令:
PRAGMA integrity_check
*** in database main ***
On tree page 120611 cell 0: 3 of 4 pages missing from overflow list starting at 120617
On tree page 120616 cell 0: 3 of 4 pages missing from overflow list starting at 120621
On tree page 3309 cell 0: 3 of 4 pages missing from over

假设原数据库名: abc.db

运行命令:
$> sqlite3 abc.db

.output "data.sql"
.dump
.quit

再建个新数据库 abcd.db
$> sqlite3 abcd.db

然后

.read "data.sql"
.quit

然后修复原来的数据库名和文件权限,应该就没事了。

References: sqlite3 database disk image malformed

No comments :