Подтвердить что ты не робот

Каковы расширения .db-shm и .db-wal в базах данных Sqlite?

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

Я заметил, что есть два файла с тем же базовым именем, что и база данных (с обычным расширением .db.) Расширения файлов .db-shm и .db-wal, и каждый из них более новый, чем файл .db метка времени.

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

4b9b3361

Ответ 1

Вы правы, это временные файлы, созданные SQLite. Если вы вручную удаляете основной db, вы, вероятно, также должны удалить их. Из того, что я могу собрать, WAL является заменой журнала отката, который позволяет SQLite откатывать изменения при сбое транзакции. Как SQLite использует их и почему их так долго держат, зависит от авторов SQLite, но в целом SQLite кажется довольно прочным, поэтому я не стал бы слишком беспокоиться о них. Для получения дополнительной информации смотрите здесь:

http://www.sqlite.org/fileformat2.html#walindexformat

Эти файлы являются новой функцией SQLite 3.7. Я не уверен, что их существование связано с ошибкой, которую вы указываете, но в отчете об ошибках предлагается работать в любом случае.