我想在名为database.db的SQLite数据库文件中删除一个表。使用后FMDB executeUpdate DROP命令确实停止了应用程序
NSLog(@"i show up in the console");
[db executeUpdate:@"DROP TABLE IF EXISTS `article`;"];
NSLog(@"i will not show up in the console");
该应用停止在查询位置。查询之前的NSLog显示在控制台中。 NSlog直接在查询后不显示在控制台窗口中。此外,在应用程序运行时,会在模拟器应用程序文件夹中连续创建一个名为database.db-journal的临时文件并将其删除。该应用程序不会崩溃,不会提供任何错误,并且不会继续...删除查询中的“IF EXISTS”不起作用,删除反引号不起作用,删除分号不起作用。
启用查询的跟踪只显示FMDB正在处理我的查询,没有更多出现。
我真的很困惑,为什么会发生这种情况。我认为表格在被删除之前必须是空的,所以我添加了一个查询来删除它中的每条记录。但id并不重要,该应用程序仍然陷入drop-query。我用尽了解决这个错误的可能性。
如果我在SQLite数据库浏览器2中执行drop命令,一切正常。
调试器的进一步研究表明,FMDB封装进入无限循环,因为语句的返回值等于SQLITE_LOCKED常量,这意味着我要删除的表被锁定。在先前的查询中发送“UNLOCK TABLES”并不能解决这个问题。为什么表被锁定?为什么从锁定表中删除记录会起作用?
你有没有解决曾经找到答案?我有同样的问题 – JLoewy