これが私のシナリオです。
アプリにログインするときに複数のリクエストがあり、そのうちの 1 つに 10,000 件以上のレコードが含まれています。
プロジェクトで SQLite.swift を使用しています。
ユーザーがログアウトしないか、データベースからデータを検索または取得するなどのタスクを 1 つ以上実行しない場合、すべて正常に機能しています。いずれかのケースが発生すると、アプリがスタックまたはクラッシュします。
一括挿入にトランザクションを使用していますが、別の同じテーブル データにアクセスしようとすると、すべてが完了するまでアプリがフリーズします。
複数の接続を使用してデータベースに挿入しようとしましたが、別の接続がデータベースを使用している場合、そのデータベースはロックされ、アプリがクラッシュします
致命的なエラー: 「試してください!」式が予期せずエラーを発生させました: データベースがロックされています: ファイル /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift、54 行目
try DataManager.con.transaction {
for index in 0 ... (entity.count - 1) {
try DataManager.con.run(table.insert(
Latitude <- entity[index]["Latitude"].string,
Longitude <- entity[index]["Longitude"].string
))
}
}
ここで DataManager.con はシングルトン オブジェクトです
助けてください。