3

我有一个带有非常大的核心数据数据库的应用程序。在过去的一年里,我已经对其进行了多次版本化。

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

反正我跑题了...

由于这个错误让我无法使用轻量级迁移,我创建了一个映射文件来帮助迁移,我不明白这将是一个更繁重的过程,并且会迫使我的用户等待应用程序将整个数据库加载到迁移时的内存。事实证明,对于非常大的数据库,这根本不是一个真正的选择,而且我的许多用户由于内存问题等原因根本无法迁移数据库。

所以现在我想重新发布我的应用程序并解决这个问题。问题是,我的一些用户有一个以某种方式标记为“正在迁移”的数据库。即使使用我的新代码,它摆脱了映射文件并支持轻量级迁移,处于这种状态的用户,“在迁移中”,似乎没有被重置。

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

有什么想法吗?

谢谢你的帮助。

4

1 回答 1

0

我唯一想到的就是打开受影响文件的 SQL 存储并查找标志或其他可能表明数据库处于临时状态的东西。您也许可以直接写入文件并更改某些内容。

这真是一个丑陋的问题。

于 2011-03-24T20:51:28.700 回答