2017-12-03 13 views
1

私に忍耐強くお待ちください - 私はこの問題で正しい用語を使用しようとします。私はiOSアプリケーションを持っているので、ユーザーは数年前からコアデータバックアップの.sqliteデータベースのバックアップを作成することができました。何らかの理由で、私はjournal_modeのプラグマオプションを "MEMORY"に設定しました。これは、過去数年間に行われた各バックアップにWALまたはSHMファイルがないことを意味します。私はすべてのデータベースコードを書き直していますが、iOSの現在のデフォルトのjournal_modeは "WAL"です。 journal_mode "MEMORY"で作成されたバックアップをインポートすると、WALモードで動作していたファイルを何とかしたいのですが(私は新しいバックアップをすべてWALモードで同じにします)、これはさえ可能です。 WALファイルやSHMファイルを作成したことのない単一の.sqliteファイルを強制的に作成することはできますか?私は、NSPersistentStoreメソッドを使用してバックアップを作成し、データを復元しようとしています。プロセス全体で使用されているオプション(つまりjournal_mode)が一貫性を保つ必要があることを覚えています。 )。私はWALファイルを持っていないので、インポートのために "MEMORY"または "DELETE" journal_modeを使用する必要があると私は信じています。しかし、これは、ファイルがWALファイルなしで永遠に機能しなければならないかどうか、またはWALモードで動作させるために何かできるかどうかはわかりません。私はこれが意味をなさないことを願っています - それは私にとってはちょっと混乱しますが、私はこの問題にどう対処するかについての考えを感謝します。WALファイルを持たないコアデータ.sqliteバックアップを復元してWALモードで動作させることはできますか?

答えて

2

排他アクセス権がある限り、データベースのジャーナルモードをいつでも変更できます。それを開いて、PRAGMAを実行してください。 (これは、WALモードを有効にする唯一の方法です)。

WALモードのみがデータベースファイルに永続的に保存されます。他のジャーナルモードは接続のプロパティです。非ファイルWALが開かれると、デフォルトではDELETEモードになります。

+0

驚くばかりです。ありがとうございました。 – SAHM

関連する問題