Несмотря на несколько ответов в нескольких потоках на SO, наоборот, Базы данных SQLite могут быть восстановлены из-за повреждения!
Я запросил обновление у команды SQLite в их FAQ (http://www.sqlite.org/faq.html#q20),, но пока есть несколько вариантов.
Часто задаваемые вопросы:
"... Если SQLITE_SECURE_DELETE не используется и VACUUM не был запущен, то часть удаленного содержимого может все еще находиться в файле базы данных, в областях, помеченных для повторного использования. Но, опять же, не существует процедур или инструментов, которыемы знаем, как помочь вам восстановить эти данные. "
и:
"... В зависимости от того, насколько сильно повреждена ваша база данных, вы можете восстановить некоторые данные с помощью интерфейса командной строки, чтобы выгрузить схему и содержимое в файл, а затем воссоздать его. К сожалению, после сбоя humpty-dumptyКак правило, его невозможно снова собрать вместе. "
На самом деле существует по крайней мере два превосходных инструмента для восстановления данных для целых баз данных SQLite и отдельных записей, и они могут помочьв случае аппаратного сбоя, ошибок программного обеспечения или человеческих проблем.Это не будет 100% нетронутым, но ситуация не безнадежно
PhotoRec с открытым исходным кодом и мультиплатформенность.Исторически он использовался для изображений и PDF-файлов, но теперь поддерживает восстановление SQLite (http://www.cgsecurity.org/wiki/File_Formats_Recovered_By_PhotoRec), вместе с 220+ двоичными типами файлов. Если база данных (или весь каталог) удалена, PhotoRec часто может восстановить файл db вдостаточно нормальное состояние для открытия и экспорта. Существуют предварительно скомпилированные версии приложения, свободно доступные для Windows, Mac и Linux.
Кроме того, коммерческий продукт Epilog от CCLКриминалистика может выполнять очень продвинутое восстановление записей, включая извлечение данных из файлов транзакций с записью в журнал записи (WAL). Это несколько сотен долларов, но это может сделать довольно удивительное восстановление данных SQLite (как собственных двоичных файлов БД, так инеобработанные образы дисков).
Оба вышеупомянутых варианта несколько раз спасли мою шкуру, поэтому мы передали это другим, кто, возможно, потерял надежду в удаленных / поврежденных базах данных SQLite (а также в подлинной экспертизе для популярных случаев использования, таких какмобильные телефоны, браузеры, адресные книги и т. д.)Если вы воспользуетесь данными / экспортируйте данные, всегда полезно проверить схемы резервного копирования и периодически запускать pragma integrity_check
вместе с очисткой.
Я попросил обновить официальный FAQ, чтобы хотя бы упомянуть, что можноgoogle "sqlite recovery" или что-то в этом роде, если можно назвать другие проекты / продукты по имени.
Cheers.