CoreData数据库版本迁移--干货

CoreData使用的是第三方库MagicRecord。

版本不断覆盖时需要对数据库进行迁移,经过不断打包测试,发现以下规律:

a、表中增加模型,覆盖安装后上一个版本表中数据无法再取出

b、A模型中新增加字段,覆盖安装后,访问A模型数据,程序闪退,必须删除以前版本重新安装,才能正常访问表中A模型的字段

c、A模型中删除字段,覆盖安装后,对应用无影响

所以,只要数据库表中有增加删除模型,模型增加字段等,都需要先做好版本迁移工作。具体步骤如下:

1、选中当前CoreData的工作表(LearnDriver 2.xcdatamodel是我已经建好了的后的结果)

2、点击Editor中的Add Model Version,使用默认设置后下一步

3、所有的对表中模型、字段的修改均在新的表中进行

4、选中最初的那个表文件

5、在右边控制面板第一个选项,Model Version中选择最新的表

6、最后代码调整,MagicRecord只需要用下面代码初始化数据库即可(对应原生CoreData中创建数据库时的option选项字典,详情看框架内部实现)

7、大工告成!

在我这个项目中,线上有两个版本,未配置数据库升级工作,导致一旦覆盖安装以前的数据就无法再取出。一直一来对表的操作都是直接在最初的表文件修改,添加模型、模型添加字段等。此时如果在这个已经更改的表文件上再按照上面的操作迁移版本是行不通的。解决方案是从找到线上第一个版本对应的表文件,假设叫A.xcdatamodel,拷贝。当前工作版本的表文件,假设是A++.xcdatamodel。用A替换掉A++,然后按照上面方法进行数据库迁移,然后在新的表上将所有A++相比A所增加的模型、字段添加上去,再重新创建新添加的模型文件即可。

时间: 2024-10-07 19:33:45

CoreData数据库版本迁移--干货的相关文章

CoreData(数据库升级 )版本迁移-iOS App升级安装

版权声明:本文为博主原创文章,未经博主允许不得转载. 如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下: 1.选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version  比如取名:mydata2.xcdatamodel 2.设置当前版本 选择上级mydata.xcdatamodeld ,在inspector中的Versione

CoreData的简单使用(二)数据的增删改查,轻量级的版本迁移

上一篇中我们已经使用CoreData创建了一个SQLite数据库 CoreData的简单使用(一)数据库的创建 现在对数据库进行数据的CRUD(增删改查) 1.Data Model 的设置 创建一个DataModel,取名CRUD.xcdatamodeld,添加Entity(Library和Book),添加属性,在Book中设置和Library的关联关系(一个Book可以存放在一个Library里) Book的属性和关联关系(选择Destination为Library,关系名称取名为librar

MSSQL数据库高版本迁移到低版本

起因是因为客户要把系统从阿里云迁移到本地服务器,阿里云上的数据库版本是MSSQL2016,客户提供的服务器是Server2008R2的,问题就来了,Server2008不支持2016版本,最后只能装的2012版本,那就需要从2016迁移到2012. 过程是一波三折,网上流传选择一下兼容模式,如下图 然后再去备份,不知道别人是怎么成功的或者是他们自己也没有成功,我反正最后还是报错,低版本不支持高版本. 最后没本法只能采用生成架构跟数据的脚本来进行导入了 好吧,好在我们数据量还不是很大,sql文件导

高版本->低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000

生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表  11.2.0.3-->10.2.0.4,若迁移范围内的有些表在目标库已经存在,则替换. 本次迁移数据量<1G. 初定方案:低版本的客户端连接到高版本数据库,用低版本导出,低版本导入. 1.采用初定方案,目标数据库所在服务器连接到源数据库,exp导出过程中报错. ZJCRNOPDB 36: sqlplus -version SQL*Plus: Rel

CoreData版本迁移

Core Data版本迁移基础 通常,在使用Core Data的iOS App上,不同版本上的数据模型变更引发的数据迁移都是由Core Data来负责完成的.这种数据迁移模式称为Lightweight Migration(可能对于开发人员来说是lightweight),开发人员只要在添加Persistent Store时设置好对应选项,其它的就交付给Core Data来做了: 从命名上可以看出这两个选项分别代表:自动迁移Persistent Store,以及自动创建Mapping Model.

Core Data 版本迁移经验总结

大家在学习和使用Core Data过程中,第一次进行版本迁移的经历一定是记忆犹新,至少我是这样的,XD.弄的不好,就会搞出一些由于迁移过程中数据模型出错导致的Crash.这里总结了一下Core Data版本迁移过程中的经验,希望对大家有用. 写在前面 关于Core Data版本迁移,这两篇文章都进行了分析,大家可以参考. Core Data Model Versioning and Data Migration Programming Guide 自定义 Core Data 迁移 迁移准备 1)

oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)

这个过程呢,还是蛮艰难的.... 一.最初我使用的是Navicat中的数据传输来迁移的,虽说整个数据库的迁移没有成功,但传输指定的对象时还是传输成功了.所以还是记录一下吧. 1.前提连接好数据库.在指定的数据库上右击,选择"数据传输". 2.在弹出的框内选择源库和目的库以及模式和你要传输的对象,如下图所示 3.点击开始便可传输 二.在利用Navicat只可传输对象,没办法传输模式等.但是如果要迁移整个数据库,肯定不仅只有迁移对象这么简单了.于是我选择了expdp和impdp导入导出的方

SQL版本迁移

大家有没有遇到过这么一种情况:开始时使用的是高版本的sql server,但服务器使用的是低版本的sql,会出现不兼容的问题. 此时就需要版本迁移了. 1.先在高版本的环境下生成脚本文件. 需要设置 选择类型 然后到低版本,打开脚本. 点击执行,会发现"数据库不存在". 关闭管理重新打开,此时会发现数据库已经自动建立了(没有的自己新建一个),继续点执行. 如果执行有错误,可以试着多执行几次.

让Code First下的数据库的迁移更加简单

Code First给我们的程序开发带了很多便利,之前的版本中一个比较不大方便的地方是数据库迁移,麻烦不说,往往还和上下文相关,在不同的版本之间的数据库进行迁移还很容易失败,并且一旦失败还不大容易找到解决方案.可能是微软已经意识到这个不足,现在Entity Framework已经支持数据库自动迁移了,比之前的方案要简单太多,下面简单的介绍一下如何使用自动迁移. 开始迁移之前: 开始迁移之前,需要将要迁移的项目设置为默认项目.这一步非常重要,否则后面会出现许多莫名其妙的错误,它包括两个步骤 在解决