On Fri, 13 Mar 2009 14:17:12 +0530, "Chaitali"
<[email protected]> wrote:
>I am using SQLite database on Windows XP Professional as a back-end for my
>application in VB6. Generally SQLite is functioning satisfactorily except
>for a few instances when the database is getting corrupted. In one such case
>of corruption the data from two tables got intermingled. In another case I
>am getting the prompt "Database disk image is malformed". Since this is
>causing data loss I would like to know how do I recover my data in case of
>such a scenario
First of all: save a copy of the database and journal, so
you can retry any of your steps.
- Restore from a recent backup
This is the only reliable way.
You may be able to rescue some data in one or more of these
ways:
- Try to dump the database
echo .dump |sqlite3 dbname >all.sql
- Try to dump table by table
echo .dump tblN|sqlite3 dbname >tblN.sql
- SELECT a range of rows using LIMIT,
avoiding broken ranges
> and secondly how to avoid such occurrence ?
- Use the latest SQLite: v3.6.11
- Make sure you don't use dangerous PRAGMAs,
like PRAGMA synchronous=OFF;
- Use transactions (BEGIN / COMMIT)
- Handle errors in your app
- Do NOT delete journal files
- make sure there is enough diskspace for
= database
= journal (in the database directory)
= temp files (in /tmp)
- Check your hardware
See also:
http://www.sqlite.org/lockingv3.html#how_to_corrupt
http://www.sqlite.org/cvstrac/wiki?p=DatabaseCorruption
http://www.sqlite.org/atomiccommit.html
>Thanks and regards
>
>Chaitali
--
( Kees Nuyt
)
c[_]
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users