5

iOS7 SQLite / Core Data スタックの新しい WAL デフォルト設定に関する多くのスレッドを読みました。

そもそもそれは良いアイデアのように思えました...ただし、ビジネス ニーズに応じて、時々、離れた Web サービスにデータベースのコピーを実行する必要があります。現時点では、SQLITE ファイルのみをバックアップしており、使用している Web サービス操作に他の 2 つのファイルを追加することはできません。これは、私のバックアップが明らかに最新ではないため、かなり無意味であることを意味します。

他の人は、journal_mode=DELETE (NSSQLitePragmasOption) を使用して WAL を無効にすることを提案しています。これは、私にとって許容できる回避策です。それでも、私はこれに満足していません。かなりまともなパフォーマンスの向上を逃しているように感じます。

理想的には、Core Data / SQLite に SHM/WAL をメイン データ ファイルに同期させてからバックアップを実行するように指示できるようにしたいと考えています。クレイジーなプライベートまたは文書化されていない API を掘り出さずにそうする方法はありますか?

4

2 に答える 2

2
$ sqlite3 yourFile.sqlite
SQLite version 3.7.12 2012-04-03 19:43:07
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> PRAGMA wal_checkpoint(RESTART);
0|20|20
sqlite> .exit
$ 
于 2013-12-26T14:16:50.337 に答える
2

WAL データをデータベース ファイルに移動するには、データベース ファイルを開き、SQL ステートメントPRAGMA wal_checkpoint(RESTART)を実行します。

于 2013-09-25T16:11:26.153 に答える