我有一个非常大的核心数据数据库的应用程序。在过去的一年里,我已经对它进行了多次版本更新。
上次我对数据库进行版本控制时,我对实体做了一个简单的更改:我添加了一个新的可选属性。由于某些原因,它不会使用轻量级迁移进行迁移。很久以后,我发现这是由于Apple的轻量级迁移代码中的一个bug导致的,这是因为我在另一个版本中需要“重命名标识符”。
总之,我离题了.
由于轻量级迁移的bug,我创建了一个映射文件来帮助迁移,没有意识到这将是一个非常繁重的过程,并且会迫使我的用户等待应用程序在进行迁移时将整个数据库加载到内存中。事实证明,对于非常大的数据库,这并不是一个真正的选择,而且我的许多用户由于内存问题等原因根本无法迁移数据库。
所以现在我想重新发布我的应用程序,并解决这个问题。问题是,我的一些用户有一个数据库,不知何故被标记为“正在迁移中”。即使我的新代码删除了映射文件,并支持轻量级迁移,处于这种状态的用户,“在迁移过程中”,似乎也没有重置。
回退迁移的选项是什么?-我可以检测到我处于这种状态,因为Documents目录中有一个'.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3‘文件。删除此文件不会清除迁移。我的猜测是,数据库以某种方式被标记为处于这种状态,或者已经部分迁移。-我可以检测到这种状态,然后完全删除数据库。但这迫使我的用户重新下载他们的数据。
有什么想法吗?
谢谢你的帮助。
发布于 2011-03-25 04:51:29
我唯一想到的就是打开受影响文件的SQL存储,并查找标志或其他可能表明数据库处于临时状态的东西。您也许能够直接写入文件并更改某些内容。
这真是个丑陋的问题。
https://stackoverflow.com/questions/5422688
复制相似问题