iPhone SDK 上的 sqlite 数据库磁盘映像格式错误

2023-11-24

我在 iPhone SDK 上使用 SQLite 作为数据库后端的新应用程序时遇到问题。

有时,我的应用程序会停止将数据加载到 UITableViews,通过管理器下载设备数据库后,我可以通过命令行访问 SQLite 数据库。我可以很好地查询某些表,但不能查询其他表,而不会收到“SQL 错误:数据库磁盘映像格式错误”错误。请参阅下面的 sqlite 会话:

    SQLite version 3.6.17
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> select * from user;
    1|[email protected]|cpjolicoeur||4d055e38bb1d3758|image/gif|cartoonme_avatar.gif||Craig|Jolicoeur|1|1
    sqlite> select * from item;
    SQL error: database disk image is malformed
    sqlite> 

在此示例中,我的用户表工作正常,但我的项目表格式错误,这与我在应用程序中看到的项目不加载的情况相对应。应用程序不会崩溃,只是由于此格式错误而无法加载数据。

有什么想法为什么会发生这种情况吗?我唯一的想法是数据库可能已损坏,因为我正在通过应用程序内的后台线程写入 SQLite 数据库。我通过后台线程中的 NSOperationQueue 从网络服务器下载数据,并使用下载的数据更新 SQLite DB。在后台线程中写入数据库(同时可能从主线程读取)是否会损坏数据库,或者是其他原因?


调试时必须非常小心后台线程访问数据库!这是因为当调试器停止处理(例如在断点处)时,所有线程都将暂停,包括可能处于数据库调用中间(介于数据库“打开”和数据库“关闭”调用之间)的线程。

如果您在断点处停止,并单击 Xcode 中的停止标志,您的应用程序将立即退出。这通常会导致错误,例如您所看到的错误或“数据库损坏”错误。

确实没有任何解决方案(因为没有办法修改“停止任务”的行为,但我已经发展了一些技术来缓解它: 1. 添加代码以检测应用程序进入后台并让您的数据库操作正常停止。 2. 调试时切勿使用停止符号来停止处理。相反,当完成断点后“继续”,点击模拟器或设备上的主页按钮(这应该触发您在步骤 1 中添加的代码),等待应用程序进入后台,然后您可以停止运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone SDK 上的 sqlite 数据库磁盘映像格式错误 的相关文章

  • 在 iOS 模拟器主屏幕或锁屏中设置壁纸(背景图像)

    当我正在绞尽脑汁思考某件事时 我的脑海中突然出现了这个想法 我们可以将模拟器的主屏幕背景图像设置为我们选择的图像吗 Xcode 3 2 2 模拟器 3 1 3 就是一个很好的例子 Certain versions of the simula
  • 在 UITableView 上显示徽章信息

    我希望在 UITableView 行上显示徽章信息 如下图所示 我尝试使用下面的代码 UILabel labelCell1 UILabel alloc init labelCell1 frame CGRectMake 160 9f 10 0
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • iPhone 中的 NSNotification

    我正在将 NSSNotifcation 发送到 iPhone 应用程序中的另一个视图控制器 但它的观察者方法收到两次通知 这可能如何 任何人都可以指导我 我已经使用此代码来发布通知 NSNotificationCenter defaultC
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • Android SQLite 按 utf8 整理/排序

    我在 Android 上的 SQLite 表中有以下项目 平板电脑选项卡有 1 列 名称 文本 Beta Work pal User 如果我在 SQL Server 中有这些项目 并带有斯洛伐克语的排序规则 并且select from ta
  • 如何使用 iPhone SDK 实现可滑动的图像堆栈(例如照片应用程序)?

    我想获取一堆图像 或者可能是一组用于下载图像的 URL 并以全屏方式显示它们 一次一个 使用 iPhone SDK 使用用户滑动来平滑地为堆栈中的下一个图像设置动画 Apple 的 Photo app 似乎可以做到这一点 此外 如果尚未检索
  • NSString – 静态还是内联?有性能提升吗?

    如果我写的话会有任何性能提升吗 NSString helloStringWithName NSString name static NSString formatString Hello return NSString stringWith
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • 如何在不运行 PostgreSQL 服务器的情况下初始化 PostgreSQL 数据库

    在初始化脚本中 我想初始化 PostgreSQL 目录 但在此阶段不需要 也不希望 正在运行的 PostgreSQL 服务器 如果我只是创建集群 作为用户postgres initdb D 但是 我还需要创建 PostgreSQL 角色 创
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • 如何将 NSDecimal 值转换为 NSInteger 值?

    我遇到一种情况 我得到一个 NSDecimal 并且我需要一个 NSInteger 我确实知道这是一个非常小的值 这是绝对肯定的 它不会大于 100 所以将它转换为 NSInteger 就完全没问题 不会发生溢出 这怎么可能做到呢 NSDe
  • 如何获取CATransition/Animation的结束事件?

    我的代码如下所示 CATransition transition CATransition animation transition duration duration 我希望得到CATransition Animation的结束事件 是否
  • 如何禁用 iPhone 邮件应用程序中的电话号码链接?

    我的公司正在发送数字电子邮件收据 但遇到了 iPhone Mail 检测数字数据并将其自动链接为电话号码的问题 我已经看到元标记应该可以解决 iPhone 上的 Mobil Safari 中的问题 但该技巧似乎不适用于 Mail 有谁知道如
  • 如何在 iOS 8 中关闭两个 UIViewController?

    我正在使用 Objective C 开发 iPhone 应用程序 由于我需要一次关闭两个 UIViewController 所以我使用下面的代码 self presentingViewController presentingViewCon
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo

随机推荐

  • 如何调试已签名发布的 APK?

    我有一个已发布的 APK 已签名 上传到 Google Play 并安装在我的 Android 设备上 我想在我的 Android 设备上运行此 APK 时对其进行调试 通过 Android Studio 或 Eclipse 我以前做过这个
  • 为什么当我将鼠标悬停在 VS Code 上时,它会出现类似芯片/扭曲的显示?

    这是我尝试使用 VS Code 时得到的视图 我已经重新安装并重新启动了系统 但没有任何进展 每当我打开 VS Code 并想要启动一个项目时 当我悬停鼠标时 情况会变得越来越糟 我最初以为我的一般显示有问题 它不会影响其他应用程序 只是
  • 我应该在构造函数中使用 getter 和 setter 吗? [复制]

    这个问题在这里已经有答案了 初始化类时 在构造函数中使用 getter 和 setter 函数是一个好习惯吗 或者直接设置变量是一个好习惯 因为构造函数可以被认为是一种变异器 您不应该从构造函数中调用 getter 和 setter 构造函
  • 带有宏的类型安全通用容器

    我正在尝试使用宏在 C 中创建类型安全的通用链表 它的工作方式应该与 C 中模板的工作方式类似 例如 LIST int list LIST CREATE int 我的第一次尝试是为了 define LIST TYPE 我上面使用的宏 定义一
  • 从“react”导入 React 会导致未捕获的语法错误:意外的标识符

    我已经安装了 webpack 3 以及 babel 和我的条目index js bundle js将构建并运行 我已经使用 ES7 8 功能对其进行了测试 但是导入不起作用并导致Uncaught SyntaxError Unexpected
  • “= =”是什么意思? [复制]

    这个问题在这里已经有答案了 我注意到有人使用 PHP 运算符 我无法理解 我用一个函数尝试过 它以疯狂的方式对应 这个运算符的定义是什么 我什至在 PHP 运算符的声明中找不到它 a b Identical TRUE if a等于 b 并且
  • Android:无法销毁活动

    我使用以下代码来删除每个视图组上的子项 protected void onDestroy super onDestroy this liberarMemoria public void liberarMemoria imagenes rec
  • 如何获取应用程序的Windows任务栏按钮以显示进度条的进度

    Windows 7 或者是 Vista 中引入的功能之一是应用程序的任务栏按钮能够显示该应用程序中进度条的进度 当我创建表单并在其上放置进度条时 它不会显示在任务栏按钮中 因此我认为这不会自动完成 如何让 Windows 7 在应用程序的任
  • CUDA 零复制内存注意事项

    我试图弄清楚使用 cudaHostAlloc 或 cudaMallocHost 是否合适 我正在尝试运行一个内核 其中我的输入数据超过 GPU 上的可用数据量 我的 cudaMallocHost 空间可以大于 GPU 上的空间吗 如果没有
  • 获取数组中具有某些属性的项目数

    我有一系列对象 如下所示 scope students isSelected true isSelected true isSelected false isSelected true isSelected true 我怎样才能得到有的计数
  • JavaScript 中的圆碰撞

    对于学校 我需要用 JavaScript 编写一个程序来判断圆圈是否发生碰撞 它不需要以图形方式显示 我尝试了一下 但我的代码似乎不起作用 我该如何修复它 这是我生成的代码 function collision p1x p1y r1 p2x
  • 根据第一个下拉选择jquery显示第二个下拉选项

    我试图根据第一个下拉列表选择获得第二个下拉列表 我在这里找到了一个很棒的脚本 http jsfiddle net heera Gyaue enter code here 从这篇文章 Jquery 根据第一个下拉列表显示 排序第二个下拉列表
  • random.sample() 每次都返回相同的随机序列?

    我使用 python 的 random sample population k 函数从列表中生成一组随机值 以创建该列表的新排列 问题是每次它运行一个循环时 它都会生成完全一样随机序列 为什么是这样 我什至使用 random seed i
  • For 循环宏在预处理器阶段展开?

    我想使用 gcc 预处理器编写几乎相同的代码声明 500 次 假设出于演示目的 我想使用宏FOR MACRO define FOR MACRO x for i in 1 x const int arr len x i i 并打电话FOR M
  • 如何停止 WebRole/WorkerRole 的单个实例/VM

    我们有一个虚拟机 说 SampleVM 已部署并在 Azure 环境上运行 同时我们创建了 2 个实例 一个是 WebRole 另一个是运行在 Slot staging 上的 WorkerRole 我的问题是我可以通过 powershell
  • asp.net core 中的 csp 报告端点

    我正在尝试在 asp net core web 应用程序中设置 CSP 并且 CSP 部分工作正常 我可以在浏览器控制台中看到违规行为 因为它们被发送到 report uri 端点 但是 我似乎无法在控制器中创建正确的方法来接收这些消息 我
  • 在 C 中生成随机布尔值的简单方法是什么? [复制]

    这个问题在这里已经有答案了 我想生成一个随机布尔值以在游戏中使用 因此它不需要加密安全 我会用stdbool h在我的代码中 我也做了 include
  • TensorFlow:使用 tf.merge_all_summaries() 时出现 PlaceHolder 错误

    我收到占位符错误 我不知道这意味着什么 因为我正确映射sess run y y X X 我在这里提供了一个功能齐全的 MWE 来重现错误 import tensorflow as tf import numpy as np def init
  • 如何使用 ICU 将 Unicode 代码点转换为 C++ 中的字符?

    不知怎的 我在谷歌上找不到答案 我在搜索时可能使用了错误的术语 我正在尝试执行一个简单的任务 将表示字符的数字转换为字符本身 如下表所示 http unicode table com en 0460 例如 如果我的号码是 47 即 我可以将
  • iPhone SDK 上的 sqlite 数据库磁盘映像格式错误

    我在 iPhone SDK 上使用 SQLite 作为数据库后端的新应用程序时遇到问题 有时 我的应用程序会停止将数据加载到 UITableViews 通过管理器下载设备数据库后 我可以通过命令行访问 SQLite 数据库 我可以很好地查询