【发布时间】:2011-04-25 11:31:17
【问题描述】:
我在 iPhone SDK 上使用 SQLite 作为数据库后端的新应用程序遇到问题。
有时,我的应用程序会停止向我的 UITableViews 加载数据,通过 Organizer 下载设备 DB 后,我可以通过命令行访问 SQLite DB。我可以很好地查询某些表,但不能查询其他表,而不会出现“SQL 错误:数据库磁盘映像格式错误”错误。请参阅下面的 sqlite 会话:
SQLite version 3.6.17
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from user;
1|cpjolicoeur@gmail.com|cpjolicoeur||4d055e38bb1d3758|image/gif|cartoonme_avatar.gif||Craig|Jolicoeur|1|1
sqlite> select * from item;
SQL error: database disk image is malformed
sqlite>
在此示例中,我的用户表工作正常,但我的项目表格式错误,这与我在应用程序中看到的项目未加载的情况相对应。应用程序不会崩溃,只是因为这个格式错误的错误而无法加载数据。
任何想法为什么会发生这种情况?我唯一的想法是数据库可能已损坏,因为我正在通过应用程序中的后台线程写入 SQLite DB。我通过后台线程中的 NSOperationQueue 从网络服务器下载数据,并使用下载的数据更新 SQLite DB。在后台线程中写入数据库(同时可能从主线程读取)会破坏数据库,还是其他原因?
【问题讨论】: