PROJET AUTOBLOG


Shaarli - Librement Shaarli

Site original : Shaarli - Librement Shaarli

⇐ retour index

Sergei Dorogin's technical blog: SQLiteException "database disk image is malformed"

mercredi 21 janvier 2015 à 17:39
Réparer une base sqlite corrompue (sur mon owncloud)
So, something's broken.
I executed a query like "select * from {table}" for each table in the database and all of them was executed successfully except one. This one caused the exactly same error I saw before -"database disk image is malformed". But in spite of error I got data from this table.

So if I can read data then I can recreate my database.
I started searching for a way how to dump data from the database into a SQL-script with INSERTs. This post helped me a lot.
I needed to download SQLite shell. This tool allows to export data in many forms including INSERTs.
I run "sqlite3.exe storage.data" where "storage.data" is my corrupted database file.
The following script exports all content (as INSERTs) with schema into "dump_all.sql" file:

sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump

Then exit (Ctrl-C, Ctrl-Z or ".exit") and run again: "sqlite3.exe storage.fixed.data", where "storage.fixed.data" is name of non-existing file for my resurrected database.
The following script reads commands from "dump_all.sql" script file and recreates all database.

sqlite> .read dump_all.sql

After this procedure I got a new database file with all content from the corrupted file.
(Permalink)