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

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

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

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

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

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

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