当前位置: 首页 > 知识库问答 >
问题:

当关系从多到一时,如何执行迁移?

阎枫涟
2023-03-14

这是我在Business实体的源代码模型中的内容:

这是我在业务实体的目标模型中得到的:

如您所见,我将关系从多个更改为一个,从用户更改为user

但现在我有以下错误:

URL:file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite options:{
    NSInferMappingModelAutomaticallyOption = 1;
    NSMigratePersistentStoresAutomaticallyOption = 1;
} ... returned error Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite, reason=Cannot migrate store in-place: Validation error missing attribute values on mandatory destination relationship, destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on mandatory destination relationship}}} with userInfo dictionary {
    NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134110 \"An error occurred during persistent store migration.\" UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on mandatory destination relationship}";
    destinationURL = "file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3";
    reason = "Cannot migrate store in-place: Validation error missing attribute values on mandatory destination relationship";
    sourceURL = "file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite";
}
fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite, reason=Cannot migrate store in-place: Validation error missing attribute values on mandatory destination relationship, destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on mandatory destination relationship}}}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/swift/stdlib/public/core/ErrorType.swift, line 178
2016-11-30 14:25:43.070185 POSowner[3474:513840] fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite, reason=Cannot migrate store in-place: Validation error missing attribute values on mandatory destination relationship, destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on mandatory destination relationship}}}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/swift/stdlib/public/core/ErrorType.swift, line 178

我不知道如何解决这个问题。有什么想法吗?

这是我设置核心数据堆栈的方式:

static func mr_setupCoreDataStack() {

    guard NSPersistentStoreCoordinator.mr_default() == nil else {
        return
    }

    let managedObjectModel = NSManagedObjectModel.mr_default()
    let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel!)

    var storePath = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: SharedGroupName)
    storePath = storePath!.appendingPathComponent("POSowner.sqlite")

    let options = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]

    try! persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storePath, options: options)

    NSPersistentStoreCoordinator.mr_setDefaultStoreCoordinator(persistentStoreCoordinator)
    NSManagedObjectContext.mr_initializeDefaultContext(with: persistentStoreCoordinator)
}

共有1个答案

慕阳
2023-03-14

最简单的解决方案是删除当前数据库并允许MagicalRecords创建一个新数据库,而无需任何迁移。请记住只做一次。

static func mr_setupCoreDataStack() {

    var storePath = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: SharedGroupName)
    storePath = storePath!.appendingPathComponent("POSowner.sqlite")
    try! FileManager.default.removeItem(at: storePath!)

}
 类似资料:
  • 我正在php上研究多对多关系,我有3个表,包括电影名称和电影id的movie表genre表包括类型和类型id的movie_genre表包括电影id和类型id的movie_genre表 genre表有这些值 我使用下面的代码来获取数据 但结果将类似于 movie_id movie_name genre[1] movie_id movie_name genre[2] movie_id movie_na

  • 问题内容: 任何人都可以解释在设计带有示例的表时如何实现一对一,一对多和多对多关系吗? 问题答案: 一对一: 使用外键访问被引用的表: 您还必须在外键列()上设置唯一约束,以防止子表()中的多行与引用表()中的同一行相关。 一对多 :在关系的许多方面使用外键链接回“一个”侧: 多对多 :使用联结表(例如): 查询示例:

  • 问题内容: 在Linux上,我需要找到当前配置的时区作为Olson位置。我希望我的(C或C ++)代码可移植到尽可能多的Linux系统。 例如。我住在伦敦,所以我目前在奥尔森的住所是“欧洲/伦敦”。我对诸如“ BST”,“ EST”之类的时区ID 不 感兴趣。 Debian和Ubuntu都有一个包含此信息的文件,但是我认为我不能一直依赖那个文件,对吗?Gnome有一个函数也可以返回正确的字符串,但

  • 我使用的是Liquibase 3.0.2、Ant task updateDatabase和直接在SQL脚本中定义的变更集,使用的注释如下 等 第一次运行工作正常,执行所有更改集并部署DB对象(oracle)。我可以看到DATABASE CHANGELOG和DATABASE CHANGELOGLOCK表填满了。 然后,我尝试用相同的精确配置重新运行Ant任务,希望Liquibase会说“好的,所有的

  • 问题内容: 我很了解Java。哪些警告和资源将帮助我尽可能轻松地跨过另一端(C#)。 问题答案: 最大提示:请使用go一词中的.NET命名约定。这样,您将不断被提示使用的是哪种语言。(听起来很愚蠢,但这确实有帮助。)尽可能多地接受该语言的习惯用法。 有许多专门针对您所处地区的人们的书籍-在亚马逊上搜索“ C#for Java”,您将获得很多成功。值得 仔细 阅读以确保您不认为C#和Java中的功能

  • 我在雪花上做POC,探索这个产品。 我有一个问题:在SQL Server中,我们有400-500个存储过程,这些存储过程是从SSRS报告调用的。这些存储过程本质上很简单,如下所示: