One of the best database engines for most low to medium traffic websites is SQLite. Many popular applications like Horde webmail, CakePHP, etc. make use of it.
However, the SQLite database users often face various errors leading to corruption. One such error is,
SQLSTATE[HY000]: General error: 11 database disk image is malformed.
At 1 onlyhost, we often get requests from our customers to fix SQLite database corruption errors as part of our Server Management Services.
Today, this write-up describes how our Support Engineers fix SQLite database corruption errors.
What causes corruption in SQLite?
We’ll begin by checking on the major reasons that can corrupt the SQLite database.
SQLite allows simultaneous access from different applications. And, when there is heavy use of the SQLite database, then there are hefty chances for database corruption. Usually, this corruption occurs due to database bugs or even hardware failure.
Similarly, regular use of the SQLite database leads to a large amount of data. And, when the size increase over the well-defined limit, it ends up in error SQLite Database Disk Image Is Malformed.
How we fixed “General error: 11 database disk image is malformed“
From our experience in managing servers, we’ve seen that the reasons for database corruption may vary depending on the system settings. It relies much on the applications and OS used in the server.
Now, let’s see the topmost reason for these SQLite database corruption errors and how our Support Team solved these errors.
Recently, one of our customers had an error while trying to access their emails via webmail.
The error said,
A fatal error has occurred
SQLSTATE[HY000]: General error: 11 database disk image is malformed
Details have been logged for the administrator.
Here, the customer was using the Horde webmail panel.
On checking our Support Engineers found that horde.sqlite database was corrupt. And, this resulted in the error.
[19:52:46 cp01 root@xxx]# /usr/local/cpanel/3rdparty/bin/sqlite3 horde.sqlite
SQLite version 3.27.1 2019-02-08 13:17:39
Enter ".help" for usage hints.
sqlite> .table
Error: database disk image is malformed
sqlite> .quit
As the database was already corrupt, the easiest fix was to recreate it.
Therefore, we solved the error by removing the corrupted database file and recreated a new database using:
/usr/local/cpanel/bin/update_horde_config
When the same error occurs on a server without a control panel, the fix differs. We export the schema and data of the SQLite database. Further, we a new database, import the schema and data.
sqlite> .mode insert
sqlite> .output mydb_dump.sql
sqlite> .dumpsqlite> .exit
This will export the database in SQL format.
Further, we add a new database, import the schema and data.
sqlite3 mydb.db < mydb_dump.sql
Finally, we update the statistics for the indexes in the databases.
That’s it. We now have a working SQLite database.
[Need assistance to fix SQLite database corruption errors? We’ll help you.]
Conclusion
In short, SQLite database error like SQLSTATE[HY000]: General error: 11 database disk image is malformed occurs due to the SQLite database corruption. Today, we saw how our Support Engineers fix SQLite database corruption errors.