我的数据库已损坏。在命令行中我输入了
PRAGMA integrity_check
和sqlite返回
On tree page 441 cell 17: Rowid 205 out of order (min less than parent max of 12258)
On tree page 26 cell 12: 2nd reference to page 441
On tree page 26 cell 12: Child page depth differs
On tree page 26 cell 13: Child page depth differs
Page 65 is never used
Page 66 is never used
wrong # of entries in index sqlite_autoindex_TBL_1
在我的c程序中输入了
sqlite3 *glbDBHandle;
sqlite3_open(DB_FILE, &glbDBHandle);
int result=sqlite3_exec(glbDBHandle, "PRAGMA integrity_check", 0, 0, 0);
此代码始终为0,其中包含破碎且健康的数据库。
我应该如何在C中使用“PRAGMA integrity_check”?或者我怎么知道我的sqlite数据库坏了?
答案 0 :(得分:4)
PRAGMA integrity_check的行为类似于SELECT查询,它在单行中返回结果。
要使用sqlite3_exec
读取结果,您需要使用回调。
请注意,PRAGMA integrity_check
无法保证找到所有错误,因此您只能用它来检查损坏的数据库,而不是健康的数据库。