核心数据:数据库迁移会导致重复

时间:2014-10-10 15:23:04

标签: objective-c macos cocoa core-data

很少有客户报告核心数据迁移后,他们的数据库条目结果重复。

我们打开了他们发送给我们的数据库,实际上条目是重复的。我们恢复备份并再次转换数据库,但我们无法在办公室重现该问题。迁移工作正常。

这种重复的原因是什么?它与模型的结构有关,还是其他什么?

这是使用模型映射的轻量级迁移。核心数据库基于mysql。

感谢

1 个答案:

答案 0 :(得分:3)

经过一段时间的斗争后,解决方案对我们来说非常明显。因为它偶尔会发生非常所以很难找到一个复制品(甚至更难找到原因!)。

似乎应用程序有时会在迁移过程中崩溃(原因不明)。

我们正在使用destinationURL -[NSMigrationManager migrateStoreFromURL:...]中的appdata.sqlite-model_version_2.3确定性文件名,例如NSMigrationManager。我们在迁移之前没有检查目的地是否存在,并且-[NSFileManager removeItemAtPath:error:]无论如何都会直接复制到目标中。因此我们会从第一次(崩溃)尝试中获得每个实体的重复项,并且之后的一切单打。

在尝试迁移以清除之前的任何失败迁移之前,对.sqlite.sqlite-shm.sqlite-wal的{​​{1}}次调用已经解决了我们的问题。