Recovering from a corrupt seahub.db

Short version

How does one proceed (under linux) to recover from a situation where all data is intact (and passwords are known for any encrypted libraries) but seahub.db is corrupt preventing any access to the HTTP frontend?

Detailed version…

I’m using Seafile Community Edition with NGINX and SQLite. All my data and databases are on a remote Amazon S3 based filesystem (using the userspace s3ql filesystem).

My server suffered an out of memory condition that caused the kernel to kill off some of the s3ql userspace processes, causing an unclean mount of the data.

After running fsck on the S3QL filesystem, only seahub.db seems to have been corrupted.

I remounted the filesystem and then ran a seafile fsck, which correctly identified all my libraries and found no errors. So it would seem all my data is intact.

However I cannot access the webserver because of the corrupt seahub.db (server crashes with Django related errors and a complaint about “DatabaseError: database disk image is malformed”).

I’ve tried completely removing the seahub.db file or replacing it with an empty file in the hope that seafile would generate me at least a working stub, but I still get errors when trying to connect to the webserver (Django crashes again and I get “OperationalError: no such table: notifications_notification”).

In summary the actual data appears to be intact (it was encrypted but I still have all the passwords), but the frontend is dead. What steps do I need to take to recover?

2 Likes

hello developers, how can he solve it ?

also if happen to me i want to know preventive measure!