Skip to content

Instantly share code, notes, and snippets.

@sarim
Created September 6, 2013 08:14
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sarim/6460936 to your computer and use it in GitHub Desktop.
Save sarim/6460936 to your computer and use it in GitHub Desktop.
Sqlite db repair script
#!/bin/bash
DBSTATUS=$(sqlite3 "$1" "PRAGMA integrity_check")
if [ "$DBSTATUS" == "ok" ] ; then
echo DB ALREADY OK
else
echo FIXING CORRUPT DB
TMPDB=$(mktemp -t sarim)
echo ".mode insert
.dump" | sqlite3 "$1" > $TMPDB
rm "$1"
sed -i "" "s/ROLLBACK; -- due to errors/COMMIT;/" $TMPDB
sqlite3 "$1" < $TMPDB
rm $TMPDB
echo DB FIXED
fi
@gitthangbaby
Copy link

throwing really a lot of errors (multiline command isn't normal, /tmp can be full, sed should not have two expressions..), using this:


[ "$1" == "" ] && exit
DBSTATUS=$(sqlite3 "$1" "PRAGMA integrity_check")
if [ "$DBSTATUS" == "ok" ] ; then
    echo "DB ALREADY OK"
else
    echo "FIXING CORRUPT DB (status $DBSTATUS)"
    TMPDB=$1.tmp
    echo -e ".mode insert\n.dump" | sqlite3 "$1" > $TMPDB
    rm "$1"
    sed -i  "s/ROLLBACK; -- due to errors/COMMIT;/" $TMPDB
    sqlite3 "$1" < $TMPDB
    rm $TMPDB
    echo "DB FIXED"
fi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment