3

非常に大きなコア データ データベースを含むアプリがあります。過去1年間に何度もバージョンアップしました。

前回データベースをバージョン管理したときに、エンティティに 1 つの簡単な変更を加えました。新しいオプションの属性を追加しました。何らかの理由で、軽量移行を使用して移行できませんでした。これは、別のバージョニングで必要だった「名前変更識別子」に起因する Apple の軽量移行コードのバグによるものであることが、かなり後になってわかりました。

とにかく脱線…

軽量移行を使用できなかったバグのため、移行に役立つマッピング ファイルを作成しましたが、これがはるかに重いプロセスであり、アプリがデータベース全体を移行中のメモリ。非常に大規模なデータベースでは、これは実際にはまったくオプションではないことが判明し、私のユーザーの多くは、メモリの問題などのためにデータベースをまったく移行できませんでした.

そこで、アプリを再リリースして、この問題を解決したいと思います。問題は、何人かのユーザーが何らかの形で「移行中」とマークされたデータベースを持っていることです。マッピング ファイルを削除して軽量移行をサポートする新しいコードを使用しても、この状態、つまり「移行の途中」にあるユーザーはリセットされないようです。

移行を取り消すためのオプションは何ですか? - Documents ディレクトリに「.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3」ファイルがあるため、この状態にあることがわかります。このファイルを削除しても、移行はクリアされません。私の推測では、データベースが何らかの形でこの状態にあるというフラグが立てられているか、すでに部分的に移行されていると思われます。- この状態を検出して、データベースを完全に削除できます。しかし、これにより、ユーザーはデータを再ダウンロードする必要があります。

何かご意見は?

助けてくれてありがとう。

4

1 に答える 1

0

私に起こる唯一のことは、影響を受けるファイルの SQL ストアをクラックして開き、データベースが一時的な状態にあることを示す可能性のあるフラグまたは何かを探すことです。ファイルに直接書き込み、何かを変更できる場合があります。

それは本当に醜い問題です。

于 2011-03-24T20:51:28.700 に答える