2011-03-24 140 views
3

我有一个非常大的核心数据数据库的应用程序。在过去的一年中,我已经多次版本化了它。备份核心数据迁移?

上次我对数据库进行版本化时,我对实体做了一个简单的更改:我添加了一个新的可选属性。由于某些原因,它不会使用轻量级迁移迁移。后来我发现,这是由于Apple重量轻的迁移代码中的一个错误,这些代码是由于'重命名标识符'导致的,我需要在其他版本中使用该代码。

无论如何,我离题...

因为这让我使用重量轻迁移的bug,我创建了一个映射文件,以帮助迁移,不理解,这将是一个更重过程并会迫使我的用户等待,而应用程序将整个数据库加载到内存中,同时进行迁移。事实证明,对于非常大的数据库,这根本不是一个选项,并且由于内存问题等原因,我的许多用户根本无法迁移数据库。

所以现在我想重新发布我的应用程序并清除这个问题。麻烦的是,我的一些用户有一个数据库,标记为“正在迁移”。即使使用我的新代码(它摆脱映射文件并支持轻量级迁移),处于此状态的用户“在迁移过程中”似乎也不会重置。

我的备选迁移选项有哪些? - 我可以检测到我处于这种状态,因为Documents目录中有一个'.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3'文件。删除此文件不会清除迁移。我的猜测是数据库以某种方式被标记为处于这种状态,或者已经部分迁移。 - 我可以检测到这个状态,然后完全删除数据库。但这迫使我的用户重新下载他们的数据。

有什么想法?

感谢您的帮助。

+0

让我只是说,很高兴我不是你。 – TechZen 2011-03-24 20:49:54

回答

0

唯一发生在我身上的就是破解一个受影响文件的SQL存储并查找标志或其他可能表示db处于过渡状态的信息。您可能可以直接写入文件并修改某些内容。

这真是个丑陋的问题。