【发布时间】:2013-12-30 13:49:09
【问题描述】:
好吧,我的处境相当艰难,或者至少我是这么认为的。我一直在研究如何解决我的问题,但实际上是空手而归。
删除一行后,我需要能够重新索引表的 rowid。这样,当我想通过 rowid 更新或索引行时,它正在访问正确的行。
现在让你们问为什么。基本上,我正在连接一个用 C 语言编程的“自制”数据库,实际上只是一堆内存位置,它们都像数据库表一样被访问。所以我想说的是他们可以通过在表中搜索一个值来查找一行,或者只是说我想要第 6 行。最后,表可以包含任何东西,以及任何意味着他们不创建的值一列作为索引,最终我唯一能按行号索引他们的行是我所知道的 rowid。
所以我发现 VACUUM 会做我想要或需要的事情,但似乎数据库所在的系统没有授予 sqlite 写入权限,因此当 VACUUM 运行时它会返回并出现错误。 (错误 14 或无法打开数据库文件)(我也知道我的数据库是打开的,所以这不是问题,但没有写权限是我能想到的唯一原因)我还阅读了一些关于自动增量或类似的东西,但并不真正理解/认为这将能够解决我的问题。
任何来自 sqlite 或数据库天才的建议或想法都将不胜感激。
【问题讨论】: