背景
sqlite
我们有一个用于大型数据库的 iPhone 应用程序。我们使用FTS3
全文搜索,所以我们必须“推出我们自己的”sqlite,而不是使用 iOS SDK 中包含的库。我们使用合并的 sqlite.c 文件,并FMDB
用作 Obj-C 包装器。
问题
我的项目可以编译,但它在我安装的异常中崩溃,以检测数据库是否出现故障(稍后会详细介绍)。然而,我的搭档正在愉快地编码,没有任何问题 - 在与我完全相同的提交修订上。这就是奇怪的地方。
具体来说,应用程序在首次加载时执行以下操作:
- 将数据库复制到用户的文档目录中,使其可写。(工作正常)
- 使用 FMDB 打开数据库,
databaseWithPath:
后跟open
. - 此时调用
goodConnection
FMDB 会返回YES
- 数据库确实是打开的并且正在工作。 - 调用
SELECT * FROM sqlite_master WHERE type = 'table'
不返回任何记录。(应该有很多表)
我试过的
现在,如果你让 sqlite “打开”一个不存在的数据库——它只会创建一个。这就是这种行为的样子。因此,我打开了一个终端窗口,导航到模拟器上我的应用程序的 Documents 目录,然后输入:
Makbook:Documents makdad$ sqlite3 myDB.db
它运行 sqlite3,当然,一切看起来都很好。我所有的数据都在那里。
我逐行检查了 FMDB 的打开方法,以确保我打开了正确的数据库。看来我确实是。
我尝试的第一件事是降级到 Xcode 3.2.6。同样的问题,所以我认为我已经排除了编译中的 Xcode 3/4 差异(尽管我一开始怀疑)。
有没有人可以尝试调试,或者知道我的问题可能是什么?