核心数据迁移 - 表已经存在

时间:2012-03-27 20:46:48

标签: ios core-data migration

我有一个现有的iPad应用程序,我刚刚添加了核心数据版本。我已经阅读了文档,并按照详细步骤进行操作。现在选择我的新模型作为当前版本化模型并尝试从xCode在我的开发设备上运行它后,我收到以下错误:

  

2012-03-28 07:35:42.137 DocsOnTap [2603:707] CoreData:错误:(1)/ var / mobile / Applications / 06EECF01-3598-4513-8A3A-BE4FD49EEBF6 /中数据库的I / O错误文件/ .DocsOnTap.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3。 SQLite错误代码:1,'表Z_2TAG已存在'

我对模型的唯一更改是添加一个新实体。我的模型中有一个名为Tag的表 - 这似乎是错误所指的内容。

如果我将当前版本化的模型还原回以前的型号版本,那么我可以在Xcode上的开发设备上运行我的应用程序而不会出错。

我已经读过尝试在开发设备上使用核心数据迁移时可能会出现问题。但是,我只是想测试一下这个过程,以确保当我们在Appstore中更新我们的应用程序时,迁移按预期为我们的客户工作。

2 个答案:

答案 0 :(得分:12)

在我的情况下,由于重命名ID 而出现了相同的错误,该错误是在实体的数据模型检查器中设置的。删除重命名ID 后,问题就消失了。

答案 1 :(得分:4)

这是一个模糊的错误。我添加的实体名为AppKeys - 这必须是核心数据或SQL Lite内部使用的实体的名称。我回过头来发现我可以毫无问题地添加和迁移其他属性和实体。但是,如果我再次尝试添加名为AppKeys的实体,那么我得到的相同错误是“表Z_2TAG已经存在”。所以我的问题的解决方案是选择另一个实体名称。遗憾的是,这没有在某个明显的地方记录 - 或者错误没有帮助。无论如何,希望有一天这可能会帮助别人。