gpt4 book ai didi

iphone - 数据库被锁定-sqlite3

转载 作者:行者123 更新时间:2023-12-03 20:58:05 29 4
gpt4 key购买 nike

-(无效)dropCategories{

        if (deleteCategoryStmt == nil) {
const char *deleteSql = "delete from tb_category";
if (sqlite3_prepare_v2(database, deleteSql, -1, &deleteCategoryStmt, NULL) != SQLITE_OK)
NSAssert1(0,@"Error in preparing drop category statement with '%s'", sqlite3_errmsg(database));
else
NSLog(@"NO error in creating drop categories statement");


}

if(SQLITE_DONE != sqlite3_step(deleteCategoryStmt))
NSAssert1(0, @"Error while drop category data. '%s'", sqlite3_errmsg(database));

sqlite3_reset(deleteCategoryStmt);
//sqlite3_finalize(deleteCategoryStmt);
deleteCategoryStmt = nil;
}

调用此函数一次可以正常工作,但每当我再次调用它时,它就会终止并出现以下异常。

任何建议为什么会发生这种情况?

 *** Assertion failure in -[Category dropCategories], /Users/rsplmac/Documents/LiteApp2/Classes/Category.m:171
2010-08-17 14:01:06.648 LiteApp2[4335:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error while drop category data. 'database is locked''
*** Call stack at first throw:
(
0 CoreFoundation 0x02429919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x025775de objc_exception_throw + 47
2 CoreFoundation 0x023e2078 +[NSException raise:format:arguments:] + 136
3 Foundation 0x000ce8cf -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 LiteApp2 0x000043ce -[Category dropCategories] + 462
5 LiteApp2 0x00004ba3 -[RootViewController updateMe:] + 1297
6 UIKit 0x002d3e14 -[UIApplication sendAction:to:from:forEvent:] + 119
7 UIKit 0x004db14b -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 156
8 UIKit 0x002d3e14 -[UIApplication sendAction:to:from:forEvent:] + 119
9 UIKit 0x0035d6c8 -[UIControl sendAction:to:forEvent:] + 67
10 UIKit 0x0035fb4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
11 UIKit 0x0035e6f7 -[UIControl touchesEnded:withEvent:] + 458
12 UIKit 0x002f72ff -[UIWindow _sendTouchesForEvent:] + 567
13 UIKit 0x002d91ec -[UIApplication sendEvent:] + 447
14 UIKit 0x002ddac4 _UIApplicationHandleEvent + 7495
15 GraphicsServices 0x02c15afa PurpleEventCallback + 1578
16 CoreFoundation 0x0240adc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
17 CoreFoundation 0x0236b737 __CFRunLoopDoSource1 + 215
18 CoreFoundation 0x023689c3 __CFRunLoopRun + 979
19 CoreFoundation 0x02368280 CFRunLoopRunSpecific + 208
20 CoreFoundation 0x023681a1 CFRunLoopRunInMode + 97
21 GraphicsServices 0x02c142c8 GSEventRunModal + 217
22 GraphicsServices 0x02c1438d GSEventRun + 115
23 UIKit 0x002e1b58 UIApplicationMain + 1160
24 LiteApp2 0x00002808 main + 102
25 LiteApp2 0x00002799 start + 53
)
terminate called after throwing an instance of 'NSException'

最佳答案

您对 sqlite3_finalize 的调用似乎已被注释。对 sqlite3_prepare_v2 的完整调用通常后面跟着 sqlite_step,然后是 sqlite3_finalize。您可以在不使用 sqlite3_reset 的情况下尝试一下吗?

编辑:对于后人:提问者找到了真正的原因,数据库被另一个对象锁定。上面的功能很好。

关于iphone - 数据库被锁定-sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500635/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com