「サーバー」マシン(同じLAN)でAFPを介して永続ストアがSQLiteを使用するアプリのプロトタイプを構築しています。ただし、アプリの 2 つの異なるインスタンスからストアに接続できません。
次のように、永続ストア コーディネーターに SQLite プラグマ設定 (ロックに関連) を設定します。
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;
}
2 番目のクライアントからストアに接続しようとしたときに表示されるエラー メッセージ (つまり、1 番目のクライアントが既に正常に接続されている場合) は次のとおりです。
エラー: sqlite データベースはロックされています。これは、.../TestDBApp.storedata でホスト排他ロックを保持している別のホストによって使用されているためです。このホスト UID... は、他のホスト UID... が .../.TestDBApp.storedata-conch のロックを解除するまで、ホスト排他ロックをオーバーライドできません
私は何か間違ったことをしていますか?
Core Data と SQLite を使用して、2 つのクライアントから同じストアにアクセスできますか?
これは Core Data や SQLite API のバグですか?