SQLite «образ диска базы данных искажен»

У меня проблемы с приложением, в котором база данных SQLite повреждена. Ранее был странный случай этого, но, похоже, он стал намного более распространенным после выхода iOS 7.1.

Я использую оболочку SQLite отМаттео Бертоцци что вы можете найти здесь:https://github.com/ConnorD/simple-sqlite

База данных повреждена и выдает ошибкуdatabase disk image is malformedнекоторые запросы могут быть выполнены, но существующие данные испорчены.

Я искал высоко и низко и не могу найти решение, я надеюсь, что у кого-то здесь есть некоторые идеи, так как это становится более распространенной проблемой после обновления iOS.

Я пробовал эти команды восстановления:

[sqlite executeNonQuery:@"pragma integrity_check"];
[sqlite executeNonQuery:@"reindex nodes"];
[sqlite executeNonQuery:@"reindex pristine"];

И вывод был:

SQLite Step Failed: database disk image is malformed
SQLite Prepare Failed: unable to identify the object to be reindexed
 - Query: reindex nodes
SQLite Prepare Failed: unable to identify the object to be reindexed
 - Query: reindex pristine`

С дальнейшей копкой я обнаружил эту проблему:Базовые данные и iOS 7: различное поведение постоянного хранилища который упоминает проблемы с SQLite после iOS7.

Хотя я понятия не имею, как использоватьNSPersistentStoreтак я пробовал бегать[sqlite executeNonQuery:@"pragma journal_mode = DELETE"]; и он просто сказалSQLite Step Failed: unknown error.

Кто-нибудь еще испытывает это или указывает мне правильное направление?

Тем временем я чувствую себя такNSPersistentStore это то, что я потенциально должен делать .. придется изучить это.

редактировать:

Из того, что я нашел, вы используете толькоNSPersistentStore когда база данных не будет обновляться, а моя регулярно.

Вот как я открываю базу данных:

sqlite = [[Sqlite alloc] init];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"HomeOpenDatabase8.sql"];

if (![sqlite open:writableDBPath]) {
    NSLog(@"DB Not Writable");
    return;
} else {
    NSLog(@"All good");
}

Поэтому я предполагаю, что мне нужно найти способ установитьpragma journal_mode = DELETE сюда..?

редактировать 2:

Я не уверен, что это связано сjournal_mode как я не используюCore Data - Вернуться к доске для рисования.

Самым большим признаком для меня является появление этой ошибки, поэтому вскоре после выхода iOs 7.1 это, безусловно, не может быть совпадением. Я продолжу пытаться повторить проблему на моем устройстве.

Ответы на вопрос(1)

Ваш ответ на вопрос