45 private links
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.