SQLite - 是否可以使非整数主键工作?

时间:2010-08-02 07:22:21

标签: sqlite primary-key varchar sqlite2

感谢阅读并希望回答,

由于遗留问题和公司政策,我正在使用SQLite 2.8.17并且有一些varchars作为主键。

但是当我运行“pragma integrity_check”时,它会报告“rowid缺少的索引”“错误的索引条目数”在包含varchar主键的表上,但返回的结果是OK。

扩展常量DB访问和使用(大约一天的负载测试)似乎导致数据库失败(完整性检查返回FAIL)和唯一的解释(通过 .explain )与之前的错误相同(“rowid缺少索引”“错误的索引编号)。

有人可以帮忙吗?我有什么不对劲吗?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您对数据库进行了清空,那么至少应该重新构建它,而不会出现此完整性检查失败。然后,按照您的说法尝试一天的访问和使用,并查看错误是否仍然存在。

要清空数据库,请在命令行中输入数据库并键入:VACUUM;,或使用命令行:

sqlite2.exe mydb.db "vacuum;"

(虽然我似乎记得SQLite2在VACUUM之后需要一个表名,所以你可能需要稍微试验一下。它会影响所有表。)