我正在构建一个应用程序原型,其中持久存储通过 AFP 在“服务器”机器(同一个 LAN)上使用 SQLite。但是,我无法从我的应用程序的 2 个不同实例连接到商店。
我在持久存储协调器上设置了 SQLite pragma 设置(与锁定相关),如下所示:
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
NSMutableDictionary *pragmaOptions = [NSMutableDictionary dictionary];
[pragmaOptions setObject:@"NORMAL" forKey:@"locking_mode"];
NSDictionary *storeOptions = [NSDictionary dictionaryWithObject:pragmaOptions forKey:NSSQLitePragmasOption];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:storeOptions error:&error]) {
[[NSApplication sharedApplication] presentError:error];
return nil;
}
我在尝试从第二个客户端连接到商店时收到的错误消息(即当第一个客户端已经成功连接时)是:
错误:sqlite 数据库被锁定,因为它正在被另一台主机使用,该主机在 .../TestDBApp.storedata 上持有主机独占锁;此主机 UID... 无法覆盖主机独占锁,直到另一个主机 UID... 释放其对 .../.TestDBApp.storedata-conch 的锁
难道我做错了什么?
使用 Core Data 和 SQLite 是否可以从 2 个客户端访问同一个商店?
这是 Core Data 和/或 SQLite API 中的错误吗?