很少有客户报告核心数据迁移后,他们的数据库条目结果重复。
我们打开了他们发送给我们的数据库,确实条目是重复的。我们恢复备份并再次转换数据库,但我们无法在办公室重现该问题。迁移正常进行。
这种重复的原因可能是什么?是和模型的结构有关,还是别的什么?
这是使用模型映射的轻量级迁移。核心数据数据库基于mysql。
谢谢
最佳答案
经过一段时间的斗争后,解决方案对我们来说非常明显。由于这种情况只会非常偶尔发生,因此很难找到重现(更难找到原因!)。
应用程序似乎有时会在迁移过程中崩溃(出于未知原因)。
我们在 -[NSMigrationManager migrateStoreFromURL:...]
中为 destinationURL
使用确定性文件名,例如 appdata.sqlite-model_version_2.3
>。我们在迁移之前没有检查目标是否存在,并且 NSMigrationManager
会直接复制到其中。因此,我们会从第一次(崩溃的)尝试中获得每个实体的重复项,并且单选之后的一切。
一些 -[NSFileManager removeItemAtPath:error:]
调用 .sqlite
、.sqlite-shm
和 .sqlite -wal
在尝试迁移之前清理任何以前失败的迁移已经为我们解决了问题。
关于objective-c - 核心数据: Database migration causes duplicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26302789/