Восстановить случайно удаленные записи в Sqlite3 - PullRequest
4 голосов
/ 18 января 2009

Как звание возможно? Я случайно удалил еще одну запись из-за моего уродливого HTML-интерфейса в FireFox. Плохо то, что эта запись удаления является корневой папкой, в которой программа автоматически удаляет все: (

Ответы [ 7 ]

2 голосов
/ 30 декабря 2013

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

Визит: http://az4n6.blogspot.com.es/2013/11/python-parser-to-recover-deleted-sqlite.html

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

Удача!

1 голос
/ 01 июля 2017

Взгляните на отменить . Я уже использовал это. Он может экспортировать строки (удаленные или нет) из файла базы данных SQLite, если записи не были перезаписаны. Последняя версия здесь .

SQLite-Deleted-Records-Parser не дает тот же тип вывода, но может быть полезен.

И есть также некоторые продукты, такие как SQLite Forensic Explorer , Восстановление SQLite , Восстановление базы данных Sqlite и SQLiteDoctor .

Если вы разработчик, вы можете избежать повторения этой же проблемы, используя litereplica . Он добавляет репликацию одного мастера в SQLite.

Но не забудьте включить восстановление на определенный момент времени, поскольку при репликации транзакций на реплики случайная команда, такая как DROP TABLE или DELETE FROM, также будет реплицироваться. С PITR вы сможете перейти к предыдущему моменту времени.

Или используйте Backup API регулярно. Хотя он передает всю базу данных в каждой резервной копии.

И помните: если вы копируете файл SQLite или используете обычное резервное копирование, когда транзакция активна копия может быть повреждена .

1 голос
/ 01 октября 2009

Данные не всегда сразу удаляются из файла. Если их много, и вы в отчаянии, вы можете использовать команду UNIX strings в файле. Это может помочь вам восстановить различные фрагменты читаемых человеком данных, но это будет сложный и неточный процесс.

1 голос
/ 24 января 2009

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

1 голос
/ 18 января 2009

Извините - Нет. Резервные копии - единственный вариант, о котором я знаю.

В будущем подумайте о том, чтобы никогда не выдавать запросы DELETE, особенно из доступных для пользователя форм (пусть это делает только администратор БД, если таковой имеется) - просто включите в таблицы поле, которое помечает запись как неактивную, а затем учитывает на ваши запросы в предложении WHERE.

1 голос
/ 18 января 2009

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

0 голосов
/ 18 января 2009

Ни за что. Без работающей резервной копии вы не сможете восстановить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...