不使用旧模型迁移数据

Posted

技术标签:

【中文标题】不使用旧模型迁移数据【英文标题】:Migrating data without the old model 【发布时间】:2012-01-12 20:01:03 【问题描述】:

我不小心丢失了旧版本的数据模型,现在自动轻量级迁移不起作用(显然)。如果出现此问题,我设法让 Core Data 删除旧存储,但我显然不想丢失旧数据。那么如何手动迁移呢?在启动时,我只是收到一个错误,即 store coordinator 没有持久存储(错误 134140)。

我已经尝试制作一个与旧模型匹配的新模型版本(它实际上在错误消息中说明了旧的、使用过的模型),但不知何故这也不起作用。它以前可以工作,但显然我只是搞砸了保存当前应用商店版本的模型版本。

编辑:我只是想到了可能的另一种方式(不知道为什么我以前没有想到这个):因为核心数据是由 SQLite 数据库支持的,所以我不能得到我需要的信息(即 4数据库中的行,然后我可以自己重新填充其余部分)直接从中?如果是这样,我可以用什么来做到这一点?

【问题讨论】:

无法回答您当前的问题。您需要提供更多详细信息。 您还需要哪些额外信息?我有一个没有旧模型的数据库,更新应用程序时无法将数据迁移到新模型。 我只是想到了可能的另一种方式(不知道为什么我以前没有想到这个):因为核心数据是由 SQLite 数据库支持的,所以我不能得到我需要的信息(那个是,来自数据库的 4 行,然后我可以自己重新填充其余部分)直接从中?如果是这样,我可以用什么来做到这一点? 【参考方案1】:

我不确定它是如何完成的,但模型是版本化的,可能使用的是 GUID 或模型文件的加密哈希。因此,您需要完全与创建模型的文件相同。

或者换句话说,你需要使用版本控制。

我想理论上应该可以精确地重新创建您的模型,但我不知道有什么方法。

【讨论】:

该死的,我害怕那个。我确实有 git,但似乎没有提交该更新......我搞砸了很多。 我的做法是通过 SQL 手动读取最重要的数据,然后使用该数据重新创建数据库。

以上是关于不使用旧模型迁移数据的主要内容,如果未能解决你的问题,请参考以下文章

更改模型后的核心数据迁移

无需迁移即可替换核心数据模型

在不破坏现有迁移的情况下重命名 Django 模型

iCloud 和轻量级迁移

iOS CoreData 版本升级和数据库迁移

Django 1.8 迁移:有啥方法可以从不再有模型的数据库表中获取数据?