【问题标题】:Core Data Migration - Table Already Exists核心数据迁移——表已经存在
【发布时间】:2012-04-11 10:50:13
【问题描述】:

我有一个现有的 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 中更新我们的应用时,迁移按预期为我们的客户工作。

【问题讨论】:

  • 每次要测试迁移时,您都需要使用原始模型安装原始应用程序。当您在 dev 中对新版本进行重大更改时,您必须删除并重新安装应用程序(除非您对 dev 版本进行更改)。
  • 我不确定我是否理解你。我的开发设备上有原始模型的原始应用程序。我更改了现有应用程序以添加核心数据版本控制,添加新模型,使其成为当前模型,向新模型添加实体。然后我尝试在开发设备上运行并得到上面的错误。 “版本开发更改”是什么意思?
  • 我是说如果你对数据模型进行版本化(例如 2.0 版),然后添加一个表。第一次在版本 1 数据模型上运行代码时,只要您添加了代码,它就会自动迁移。现在,如果您停止代码并对 2.0 数据模型进行更多更改,它将不会自动迁移,因为您刚刚修改了相同的模型,并且可能需要删除并重新运行您的应用程序。

标签: ios core-data migration


【解决方案1】:

嗯,这是一个晦涩难懂的错误。我添加的实体名为 AppKeys - 这必须是核心数据或 SQL Lite 内部使用的实体的名称。我从头开始,发现我可以毫无问题地添加和迁移其他属性和实体。但是,如果我再次尝试添加名为 AppKeys 的实体,则会收到相同的错误消息,即“表 Z_2TAG 已存在”。所以解决我的问题是选择另一个实体名称。遗憾的是,这没有在明显的地方记录 - 或者该错误没有更多帮助。无论如何,希望有一天这可能会对其他人有所帮助。

【讨论】:

  • 我得到了同样的错误,SQLite 错误代码:1,SQLite 错误代码:1,'表 ZMEASUREMENT 已经存在',重命名表修复了一个修订版。下次我尝试迁移时,新名称“表 ZMEASUREMENT2 已存在”再次出现相同的错误。
  • 感谢@daveywc。可悲的是,有时多么美妙的事情让你想知道。可能是 NSEntityMigrationPolicy 属性和关系的解决方案(这也是我从他们的定义中找到的):stackoverflow.com/questions/7027108/…
  • 我遇到了类似的问题,其中关系被命名为 groups,这显然是 iOS 7 中的保留名称,但不是 8。将关系重命名为其他名称解决了该问题。
【解决方案2】:

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

【讨论】:

  • 我做了同样的事情,在插入重命名 ID 时,我错误地为实体而不是属性设置了重命名 ID。
  • @VickyDhas 谢谢!我也犯了同样的错误!在阅读您的评论之前,我忽略了 git diff 5 次! 掌心
  • 同样的问题,谢谢!有一些被重命名的属性。每次事故也是实体。
  • 啊啊啊!就是这样。你先生今天救了我:)
  • 我认为这是数据模型编辑器工作方式怪异的副作用。您认为您只是选择了一个属性,而编辑器已将焦点移至一个实体。
猜你喜欢
  • 1970-01-01
  • 2011-09-14
  • 2020-03-03
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2011-07-22
相关资源
最近更新 更多