Отказаться от миграции основных данных? - PullRequest
3 голосов
/ 24 марта 2011

У меня есть приложение с очень большой базой данных Core Data. За прошедший год я много раз проверял это.

В прошлый раз, когда я версировал базу данных, я внес одно простое изменение в сущность: я добавил новый необязательный атрибут. По некоторым причинам он не будет мигрировать с помощью облегченной миграции. Гораздо позже я узнал, что это произошло из-за ошибки в коде облегченной миграции Apple, возникшей из-за «переименования идентификаторов», которые мне понадобились в другой версии.

Во всяком случае, я отвлекся ...

Из-за ошибки, которая не позволяла мне использовать облегченную миграцию, я создал файл сопоставления, чтобы помочь с миграцией, не понимая, что это будет намного более тяжелый процесс и заставит моих пользователей ждать, пока приложение загрузит всю базу данных в память при выполнении миграции. Оказывается, это не совсем вариант с очень большими базами данных, и многие из моих пользователей вообще не смогли перенести базу данных из-за проблем с памятью и т. Д.

Итак, теперь я хочу переиздать свое приложение и решить эту проблему. Проблема в том, что у некоторых из моих пользователей есть база данных, которая как-то помечена как находящаяся «в процессе миграции». Даже с моим новым кодом, который избавляется от файла сопоставления и поддерживает облегченную миграцию, пользователи, находящиеся в этом состоянии «в процессе миграции», похоже, не получают сброс.

Какие есть варианты возврата миграции? - Я могу определить, что я нахожусь в этом состоянии, потому что в каталоге «Документы» находится файл «.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3». Удаление этого файла не очищает миграцию. Я предполагаю, что база данных каким-то образом помечена как находящаяся в этом состоянии или уже частично перенесена. - Я могу обнаружить это состояние, а затем полностью удалить базу данных. Но это заставляет моих пользователей заново скачивать свои данные.

Есть мысли?

Спасибо за помощь.

1 Ответ

0 голосов
/ 24 марта 2011

Единственное, что мне приходит в голову, - это открыть хранилище SQL поврежденного файла и найти флаги или что-то еще, что может указывать на то, что БД находится в переходном состоянии.Вы можете написать прямо в файл и что-то изменить.

Это действительно ужасная проблема.

...