Feature #1992
closedВосстановление поврежденных бд Azoth
100%
Description
Как указано в #1991, повреждение бд приложения вызывает проблему. Вариантом её решения является попытка автоматического восстановления поврежденной базы данных.
Например, имеем следующую ситуацию:
% sqlite3 history.db SQLite version 3.12.0 2016-03-29 10:14:15 Enter ".help" for usage hints. sqlite> pragma integrity_check; Error: database disk image is malformed sqlite>
В таком случае возможным решением является следущая последовательность действий:
0. Смотрим размер файла базы данных.
1. Смотрим доступное место на диске с директорией содержащей поврежденную базу
2. Если 1. меньше 0., то предлагаем пользователю 3 варианта:
1) почистить раздел вручную и попробовать снова;
2) удалить старую базу и создать новую;
3) выйти из программы
3. Если 1. больше 0., то:
4. переименовываем поврежденную базу в <name>-backup.db
5. Дампим поврежденную базу в новую, например:
sqlite3 history-backup.db '.dump' | sqlite3 history.db
6. Выдаем результат, например.
"Размер файла поврежденной базы данных: 522975232 Кб
Размер файла восстановленной базы данных:
489742336 Кб, Восстановлено 2946948 записей."