2014-03-13 68 views
2

我正在开发使用CoreData的iOS应用程序。
我已经从用户那里获得了包含以下隐藏文件的应用程序数据。
什么是.appname.sqlite.migrationdestination_xxxx文件?它会导致sql腐败错误?

  • 文档/ .appname.sqlite.migrationdestination_xxxx(549MB)
  • 文档/ .appname.sqlite.migrationdestination_xxxx-SHM(721KB)
  • 文档/ .appname.sqlite.migrationdestination_xxxx-沃尔玛(0Byte)

并且在相同的Documents文件夹中有appname.sqlite,appname.sqlite-wal和appname.sqlite-shm。
appname.sqlite是应用程序的主要sql文件。而-wal,-shm似乎是由iOS自动生成的。

(我从What are the .db-shm and .db-wal extensions in Sqlite databases?学)我觉得migrationdestination文件仅仅是进行数据迁移。
可能在用户设备未能迁移时仍然存在。 (例如,当我的应用长时间处于后台时iOS终止我的应用)。

顺便说一下,一些使用我的应用的用户遇到了这个麻烦。

Mar 10 13:33:24 xxxx-xx-iPhone XXXXXXXX[5416] : CoreData: error: (11) Fatal error. The database at /var/mobile/Applications/95D2823D-37E4-4596-9507-B58571D32EBB/Documents/appname.sqlite is corrupted. SQLite error code:11, 'database disk image is malformed'

我发现这个提示。
Core Data store corruption

一个答案说-wal和-shm导致此错误。所以我删除它。
但是,用户仍会得到相同的错误。所以我认为迁移目的地可能会导致这个错误。
我会对它进行测试以清除明天。然后我把结果报告给这里。

那么有没有人有同样的麻烦,建议,答案?
感谢您阅读我的问题。

回答

1

这些是在迁移过程中存在的文件。如果您看到这些文件,那么您的迁移失败。检查你的设备上的崩溃日志并确认。

您是否在-applicationDidFinishLaunching...方法中迁移?你遇到了一个糟糕的食物崩溃?这些是在迁移过程中导致迁移失败的常见情况。

+0

我不会变bad8f00d。显示加载窗口。如果用户在前台打开应用程序,则没有关系。但是,如果用户将应用程序发送到后台,iOS将在30秒后终止应用程序。顺便说一句,我有这个解决方案。所以我会编辑我的问题。 – dosuken123

0

最后,我找到了'数据库磁盘映像格式不正确'的解决方案。

我改名这些文件


  • 文件/ .appname.sqlite.migrationdestination_xxxx
  • 文件/ .appname.sqlite.migrationdestination_xxxx-SHM
  • 文件/ .appname .sqlite。migrationdestination_xxxx - 沃尔


  • 文件/ appname.sqlite
  • 文件/ appname.sqlite-SHM
  • 文件/ appname.sqlite,沃尔玛

我删除旧的appname.sqlite,appname.sqlite-shm,appname.sqlite-wal文件。

我猜为什么会发生这个错误。
也许用户成功迁移。
所以有两个sql文件。 appname.sqlite和.appname.sqlite.migrationdestination_xxxx。
然后iOS会交换这些文件,但是如果app由于某种原因被终止,appname.sqlite仍然处于删除过程中。
但应用程序看看appname.sqlite每次,然后iOS猜错它已损坏,所以我的应用程序无法运行。

现在我要制作这些交换脚本并应用我的应用程序。
感谢您列出我的问题。

相关问题