SQLite 异常:SQLite 忙

2024-03-10

任何人都可以提供有关此错误的任何信息。我正在尝试使用 Objective C 插入表。

当我这样做时,我收到错误 SQLite Busy。为什么会发生这种情况?


如果在调用 sqlite3 函数时得到错误代码 SQLITE_BUSY,这意味着根据 drdaeman 的观察,数据库已被同一进程或进程中的一个线程锁定。

处理这种情况的正确方法是在循环中尝试该操作,如果返回码仍然是SQLITE_BUSY,则等待一段时间(您决定超时值),然后在下一个循环迭代中重试该操作。

例如,以下代码片段取自 Objective C 包装器 FMDB(http://code.google.com/p/flycode/source/browse/trunk/fmdb http://code.google.com/p/flycode/source/browse/trunk/fmdb)展示了如何为查询准备语句,同时考虑到某些操作可能返回 SQLITE_BUSY:

int numberOfRetries = 0;
BOOL retry          = NO;

if (!pStmt) {
    do {
        retry   = NO;
        rc      = sqlite3_prepare(db, [sql UTF8String], -1, &pStmt, 0);

        if (SQLITE_BUSY == rc) {
            retry = YES;
            usleep(20);

            if (busyRetryTimeout && (numberOfRetries++ > busyRetryTimeout)) {
                NSLog(@"%s:%d Database busy (%@)", __FUNCTION__, __LINE__, [self databasePath]);
                NSLog(@"Database busy");
                sqlite3_finalize(pStmt);
                [self setInUse:NO];
                return nil;
            }
        }
        else if (SQLITE_OK != rc) {


            if (logsErrors) {
                NSLog(@"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]);
                NSLog(@"DB Query: %@", sql);
                if (crashOnErrors) {

                    NSAssert2(false, @"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]);
                }
            }

            sqlite3_finalize(pStmt);

            [self setInUse:NO];
            return nil;
        }
    }
    while (retry);
}

顺便说一句,如果您需要访问 sqlite,FMDB 非常方便,并且相对于通过本机 C API 直接访问而言使用起来更简单。

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

SQLite 异常:SQLite 忙 的相关文章

  • 从 SQLite 命令行 shell 中打开数据库文件

    我正在使用SQLite 命令行外壳 http www sqlite org sqlite html 如文档所述 我可以通过将数据库作为可执行文件的参数提供来打开数据库 sqlite3 data db 我不知道如何打开数据库文件在工具内在调用
  • PHP MVC 应用程序中哪里可以捕获异常?

    我有一个中小型 PHP 应用程序 用于练习 OOP 和 MVC 技能 我有初始化 引导程序调用的文件Router谁打电话控制器 gt 服务层 gt 存储库 数据库 然后将变量发送回视图层 所有依赖项均由 DiC IOC 处理 我创建抽象类
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • 为每行 NSTableView 文本着色

    我有一个 NSTableView 它显示我拥有的对象数组 对于每个对象 行 我想根据在每个对象上运行的函数的结果来更改显示的文本的颜色 因此 例如表中存在于另一个列表 或其他一些要求 中的所有对象 我想以绿色文本显示它们 不存在的对象以红色
  • iTunes connect 中不同应用程序的多个银行帐户[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 由于我们正在为客户开发 iPhone 应用程序 并且他希望对该应用程序收费 因此我们想知道是否可以在 iTunes 中连接多个银行帐户 以便将收入直接
  • Objective C (iphone) 关于发布的问题

    如果我创建一个视图 并将其添加为子视图并将其添加到数组中 是否必须释放它两次 UIView cat UIView alloc initWithFrame someFrame self view addSubview cat self ani
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • 与 Objective-C 的 VPN 连接

    有没有办法在 iPhone 的 Objective C 中以编程方式建立 VPN 连接 有这方面的好教程吗 有人知道吗 多谢 我认为第三方应用程序无法访问这些 API
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 用于具有转换的非导航应用程序的视图控制器/NIB 架构?

    我正在修补一个 iPad 应用程序 就像许多 iPad 应用程序一样 它不使用 UINavigation 根视图控制系统 因此我没有每个应用程序 视图 的自然所有权 我基本上有两个基本视图 文档列表视图和文档编辑视图 我正在使用 UIVie
  • Objective C 中类别是如何实现的?

    作为一名程序员 我知道如何使用类别 但我很好奇它们是如何实现的 编译器是否将它们编译为对类替换方法 http developer apple com library mac documentation Cocoa Reference Obj
  • 在情节提要中将 Segue 拖至自身

    我想将一个 Segue 从我的视图控制器拖到其自身 所以我可以推送该特定视图控制器的 无限 实例 我知道如何在代码中执行此操作 即以编程方式实例化视图控制器 但是 我想尽可能使用 segues 我发现了一些在故事板中进行自我延续的 技巧 但
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • 如何为 Nslocal 通知设置自定义重复间隔......?

    我是 iphone 开发新手 我正在尝试在我的项目中使用 NslocalNotification 我需要每 2 小时或每两天或每两个月等给出提醒 目前我正在使用 NslocalNotification 重复间隔 但它仅适用于使用 Ncale
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 在成为FirstResponder或resignFirstResponder的情况下将对象保持在键盘顶部?

    我目前在键盘顶部有一个 UITextField 当您点击它时 它应该粘在键盘顶部并平滑地向上移动 我不知道键盘的具体时长和动画类型 所以确实很坎坷 这是我所拥有的 theTextView resignFirstResponder UIVie
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err

随机推荐

  • 如何放大 Mapbox Leaflet 中的标记单击事件?

    我想在单击标记时放大该标记 我正在使用 Mapbox 和传单 I tried marker on click function e map setView e lat e lng 12 但这给了我某种错误 类型错误 t 为空 我什至尝试过
  • JOptionPane 显示选项对话框

    我想使用 JOptionPane 创建一个 showOptionDialog 它有两个按钮 公制和英制 如果单击 Metric 则会加载 Metric GUI 相反 如果单击 Imperial 则会加载 Imperial GUI 我该怎么做
  • 从头开始创建 LinkedList 类

    我们的任务是从头开始创建一个 LinkedList 但绝对没有任何读物来指导我们完成这项令人偏头痛的任务 而且网上的所有内容似乎都只是使用 Java 内置的 LinkedList 方法和东西 无论如何 当使用 Java 的默认内容时 链表非
  • 使用 pandas 将 JSON 输出为 CSV

    我正在尝试转换以下内容 json文件至 csv使用熊猫 输入 json 文件名 my json file json profile set doc type PROFILE key 123 mem list mem num 10001 cu
  • 正确生成带有特殊字符的站点地图 XML

    我有一个程序可以为 Google 网站管理员工具 除其他外 生成 XML 站点地图 GWT 给我提供了某些站点地图的错误 因为 URL 包含字符序列 如 等 站点地图规范说 https www sitemaps org protocol h
  • “interface”关键字是否从 Dart 中删除了?

    只是为了确定 Dart 是否删除了显式定义interface现在赞成通过隐式定义它abstract 我看到它提到Dart 和接口隔离原则 https stackoverflow com questions 20791286 dart and
  • 对列表中的每个 Id 进行多个 RestTemplate 调用

    我需要制作多个RestTemplate要求每个Id in a List
  • 编写指向其实现者的通用接口的便捷方法

    java中是否有一种编写通用接口的方法 以更方便的方式向此类接口的实现者指出 例如我写的接口 public interface Updatable
  • Mysql2::错误(用户'root'@'localhost'访问被拒绝(使用密码:NO)):

    只需在 CentOS 5 服务器 apache passenger 上使用 mysql mysql2 gem 设置一个新的 Rails 3 1 3 应用程序 我已经正确设置了一个数据库和该数据库的用户 并且我已将登录名和信息添加到我的数据库
  • 防止 TextView 中出现不需要的换行

    尽管设置如此 我的文本视图仍在换行文本lines 1 and ellipsise end 除了防止换行手出现带有 的文本省略号之外 我还需要做什么
  • 带 INNER JOIN 的 SQL DELETE

    有2张桌子 spawnlist and npc 我需要从中删除数据spawnlsit npc templateid n idTemplate是唯一 连接 表格的东西 我已经尝试过这个脚本 但它不起作用 我已经尝试过这个 DELETE s F
  • 如何在 unix 中解压 tar.bz 文件?

    我发现大量页面说明如何解压缩 tar bz2 文件 但是如何解压缩 tar bz 文件呢 use the j的选项tar tar xjf path to archive tar bz
  • 调用database.rawQuery时Android SQLiteMisuseException

    我在 Android 应用程序中使用 SQLite 数据库 有时在调用 database rawQuery String sql String SelectionArgs 时会收到 SQLiteMisuseException 这很奇怪 因为
  • 在 Canvas 上绘制两个 3D 字符串?

    我必须在画布上绘制 2 个字符串 字符串必须使用相同坐标第二根弦必须是第一根弦绕 Y 轴旋转 45 度的结果 结果必须如下所示 这是我的代码 Matrix matrix new Matrix matrix canvas getMatrix
  • 创建具有最大行数的表 (ORACLE)

    Oracle建表时有没有办法限制最大行数 如果表有数字键 您可以添加一个检查约束 声明该键不超过特定值 ALTER TABLE turnip ADD CONSTRAINT check turnip id CHECK turnip id lt
  • 如何在 Rust 中模拟特定方法而不是所有方法?

    我在确定目标结构的方法的单元测试时遇到了麻烦 我有一个方法random number根据结构体的属性返回一个随机值 还有另一种方法plus one它获取第一个方法的结果并用它做一些事情 pub struct RngTest pub attr
  • Flutter Google Maps - 根据行驶方向旋转标记

    任何人都可以分享 Flutter 谷歌地图插件的文档 代码示例 我可以在其中根据行驶方向旋转标记 例如 汽车图标 我看到这可以通过旋转标记在本机库上实现 但在 Flutter 中找不到任何旋转标记的选项 我想我们在旋转标记时需要考虑以下几点
  • 匹配 gtksourceview 中的整个字符串

    使用这个简短的 XML 片段在 gtksourceview 中定义字符串
  • XACML 3.0 和多种资源

    我试图弄清楚如何使用 Balana 的 XACML 实现来实现授权机制 WSO2 的权利引擎基于 Balana 当用户请求访问单个资源时 例如 鲍勃想要阅读医疗记录 事情就很简单了 然而 假设鲍勃想要阅读他所有患者的医疗记录 这里的第一个问
  • SQLite 异常:SQLite 忙

    任何人都可以提供有关此错误的任何信息 我正在尝试使用 Objective C 插入表 当我这样做时 我收到错误 SQLite Busy 为什么会发生这种情况 如果在调用 sqlite3 函数时得到错误代码 SQLITE BUSY 这意味着根