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

JJe*_*eff 5 sqlite varchar primary-key sqlite2

感谢阅读,希望能解答

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

但是,当我运行"pragma integrity_check" 时,它会具有 varchar 主键的表上报告“索引中缺少 rowid”“索引中的条目数错误”,但返回的结果是可以的。

Extended Constant DB 访问和使用(大约一天的负载测试)似乎导致 DB 失败(完整性检查返回 FAIL)并且唯一的解释(通过.explain)是与之前相同的错误(“rowid 从索引中丢失”“索引中的条目数错误”)。

任何人都可以帮忙吗?我做错了什么吗?

谢谢。

MPe*_*ier 0

如果您清理数据库,那么至少应该在没有完整性检查失败的情况下重新构建它。然后,按照您所说的尝试访问和使用一天,看看错误是否仍然存在。

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

sqlite2.exe mydb.db "vacuum;"
Run Code Online (Sandbox Code Playgroud)

(虽然我似乎记得 SQLite2 在 后需要一个表名VACUUM,所以你可能需要进行一些实验。尽管如此,它仍然会影响所有表。)