So I've been developing happily with CoreData+CloudKit for a while now, and really haven't run into any issues until this. I've migrated my model a couple of times, and it worked fine, but this was the first time I added a new entity to the model. If I run on a device (any device, iPhone, iPad, Mac via Catalyst), I get a migration error. Here's the entirety of my persistentContainer setup:
public var persistentContainer: NSPersistentContainer = {
let modelPath = Bundle(for: CoreDataStack.self).url(forResource: "Progress", withExtension: "momd")!
let model = NSManagedObjectModel(contentsOf: modelPath)!
let container = NSPersistentCloudKitContainer(name: "Progress", managedObjectModel: model)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
print(storeDescription)
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
And here's the error I'm getting:C
allstacks=true}}}
CoreData: annotation: : Attempting recovery from error encountered during addPersistentStore: Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=[…].sqlite, reason=Cannot migrate store in-place: constraint violation during attempted migration, destinationURL=[…].sqlite, NSUnderlyingError=0x600000cebae0 {Error Domain=NSCocoaErrorDomain Code=134111 "(null)" UserInfo={_NSCoreDataOptimisticLockingFailureConflictsKey=(
), NSUnderlyingException=Constraint unique violation, reason=constraint violation during attempted migration, NSExceptionOmitCallstacks=true}}}
Important note: I am not using contraints at all in this model. I have created a new Entity, given it a single attribute, and a single one-to-many relationship with an existing entity. That's all.
Also, here's an excerpt from the logs when I have -com.apple.CoreData.MigrationDebug enabled, pointing to an issue with the CloudKit metadata tables update step:
CoreData: annotation: Completed persistent history metadata tables update
CoreData: annotation: Beginning CloudKit metadata tables update
CoreData: annotation: Failed lightweight migration on connection
CoreData: annotation: Rolling back formal transaction
Anyone seen this, have any idea what could be failing, or how to make cloudkit/coredata happy with a migration like this?