SQLCipher, зашифрованные основные данные и iOS — два файла .sqlite — это нормально?

Я использую SQLCipher для шифрования моей базы данных, так как там есть конфиденциальная информация. Вроде все работает, просто меня раздражает, потому что у меня сейчас два .sqlite-файла:

~/Library/Application Support/MyData.sqlite
~/Library/Application Support/MyApp/MyData.sqlite
~/Library/Application Support/MyApp/MyData.sqlite-shm
~/Library/Application Support/MyApp/MyData.sqlite-wal

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


person swalkner    schedule 24.03.2014    source источник
comment
Что такое файлы shm и wal уже объяснялось много раз. Дублировать, например: stackoverflow.com/questions/18870387/   -  person thom_ek    schedule 24.03.2014
comment
да меня мало интересуют shm- и wal-файлы, а больше два .sqlite-файла, т.е. - зачем два sqlite-файла?   -  person swalkner    schedule 24.03.2014
comment
Если вы удалите приложение из симулятора, а затем переустановите его, вы получите каждый раз два файла .sqlite?   -  person Tom Harrington    schedule 25.03.2014
comment
Это не кажется правильным. Файлы -shm и -wal взяты из WAL, и их можно спокойно игнорировать. Однако это не объясняет существование двух разных баз данных MyData.sqlite. @swalkner содержит ли первая база данных какие-либо данные? Какие даты стоят на файлах? Вы уверены, что ни один из них не остался до того, как вы использовали SQLCipher?   -  person Stephen Lombardo    schedule 26.03.2014
comment
Ваше приложение и модель Core Data называются MyData? По крайней мере, с зашифрованными базовыми данными (которые используют SQLCipher) вы увидите пустую (только схему) базу данных для каждой модели с именем модели и еще одну базу данных, которая будет содержать все зашифрованные данные, названные как сам проект (т.е. model1. sqlite, model2.sqlite, проект.sqlite).   -  person momo    schedule 03.11.2015


Ответы (1)


Вам нужно будет отключить функцию записи упреждающего журнала sqlite. Чтобы сделать это в Core Data, вам нужно установить параметр прагмы в вашем магазине. Вы можете увидеть, как установить флаг, из этого вопроса, связанного с переполнением стека.

person casademora    schedule 24.03.2014
comment
Однако это не будет учитывать два файла .sqlite. - person Tom Harrington; 24.03.2014
comment
Эти файлы являются артефактом, связанным с ведением журнала с упреждающей записью. Отключение функции для магазина не создаст их в первую очередь. Эта функция была включена по умолчанию платформой CoreData в iOS7. - person casademora; 25.03.2014
comment
Это не отвечает на вопрос, почему существует два файла sqlite. - person Leo Natan; 26.03.2014