CoreData轻量迁移重命名实体失败:SQLite表已存在错误排查
CoreData轻量迁移表已存在错误的成因与解决方法
问题成因
- 第一次迁移将
Examination重命名为Exam时,Exam实体的Renaming Identifier本应保留为Examination,用来关联旧数据中的ZEXAMINATION表到新的ZEXAM表。 - 当前新Model版本中,你移除了
Exam的Renaming Identifier,导致CoreData无法识别Exam是从旧Examination演化而来的实体。 - 同时你将
ExaminationNew重命名为Examination并设置Renaming Identifier为ExaminationNew,CoreData在迁移时因实体演化关系丢失,错误地试图为新的Examination实体创建已被Exam占用的ZEXAM表,最终触发SQLite表已存在的错误。
解决步骤
- 打开当前活跃的CoreData Model版本,找到
Exam实体,设置其Renaming Identifier为Examination(对应第一次迁移的原始实体名)。 - 确认
Examination实体(原ExaminationNew)的Renaming Identifier仍为ExaminationNew。 - 保存Model文件,重新运行App执行轻量迁移。
内容的提问来源于stack exchange,提问作者christophriepe
相关产品推荐
相关产品推荐

