首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone中的SQLITE_CORRUPT问题

iphone中的SQLITE_CORRUPT问题
EN

Stack Overflow用户
提问于 2011-05-18 13:14:45
回答 1查看 925关注 0票数 0

最近,我在我的iPhone应用程序中实现了一个使用SQLite的缓存组件。我本机编写和读取数据--任何包装器框架。问题是,在使用该应用程序一段时间之后,它开始获得SQLITE_CORRUPT状态代码,以响应我在DB中执行的任何SQL语句。

我使用SQLiteManager作为我的DB mgmt工具。当数据库损坏时,我试图通过SQLiteManager进行分析和检查,但它甚至不允许我浏览表中的数据,只输出一条简短的消息,其中说数据已损坏。

有人能帮上忙吗?首先,数据库是如何到达这种情况的?第二,我如何或者在哪里看到这些数据?

谢谢,盖伊。

EN

回答 1

Stack Overflow用户

发布于 2011-05-18 13:32:14

您可以参考这个正式文件。在这里,他们提到了数据库被破坏的机会非常少。

他们还列出了数据库如何被破坏的机会。然后,请参考下面的示例,该示例可能会导致数据库出现问题。

代码语言:javascript
复制
  CREATE TABLE ex1(a INTEGER PRIMARY KEY, b);
  INSERT INTO ex1 VALUES(1,2);
  INSERT INTO ex1 VALUES(2,3);
  CREATE TRIGGER ex1_tr1 AFTER UPDATE ON ex1 BEGIN
    DELETE FROM ex1 WHERE a=old.b;
  END;

  UPDATE ex1 SET b=b+1;

在上面的示例中,更新的第一个周期会触发触发器并删除ex1表的第二行。当UPDATE循环的第二个周期运行时,它尝试处理ex1表的第二行。SQLite认识到第二行已被删除,因此它中止了第二个循环,但它本身未能正确清理,这可能导致后续循环中的数据库损坏。

因此,基本上,您需要通过调试或通过应用程序或任何其他机制执行以下步骤来了解代码中发生这种情况的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6045283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档