感谢阅读并希望回答,
由于遗留问题和公司政策,我正在使用SQLite 2.8.17并且有一些varchars作为主键。
但是当我运行“pragma integrity_check”时,它会报告“rowid缺少的索引”和“错误的索引条目数”在包含varchar主键的表上,但返回的结果是OK。
扩展常量DB访问和使用(大约一天的负载测试)似乎导致数据库失败(完整性检查返回FAIL)和唯一的解释(通过 .explain )与之前的错误相同(“rowid缺少索引”和“错误的索引编号)。
有人可以帮忙吗?我有什么不对劲吗?
感谢。
答案 0 :(得分:0)
如果您对数据库进行了清空,那么至少应该重新构建它,而不会出现此完整性检查失败。然后,按照您的说法尝试一天的访问和使用,并查看错误是否仍然存在。
要清空数据库,请在命令行中输入数据库并键入:VACUUM;
,或使用命令行:
sqlite2.exe mydb.db "vacuum;"
(虽然我似乎记得SQLite2在VACUUM
之后需要一个表名,所以你可能需要稍微试验一下。它会影响所有表。)