Hari ini, saya iseng cek error logs cyberpanel dari salah satu server saya, ternyata ada error yang kurang lebih seperti ini
sqlite3stmt::execute(): unable to execute statement: database disk image is malformed
Saya pun bingung padahal databasenya hanya menjalankan proses CRUD biasa, tapi asumsi saya adalah karena databasenya merupakan database hasil upload ulang dari file backup. Setelah sebelumnya saya install ulang server karena cyberpanel terkena virus massal bulan kemarin.
Saya pun coba searching di google dan tanya ke chatgpt, mereka menyarankan menjalankan perintah VACUUM, sayangnya metode ini tidak berhasil, masih muncul error database disk image is malformed. Akhirnya solusi paling terakhir yang saya jalankan adalah melakukan clone database. Yap, disini saya menggunakan software SQLiteStudio.
1. Pertama download dulu software SQLiteStudionya disini https://sqlitestudio.pl/
2. Siapkan file database SQLite yang lama dan baru.
3. Jalankan Software SQLiteStudio.
4. Pilih menu Database lalu Add Database, pada isian File masukkan masing-masing database lama dan baru (lakukan berulang). Kemudian tekan OK.
5. Klik masing-masing databasenya hingga muncul Submenu Tables dan Views.
6. Setelah itu klik kanan pada database yang lama, pilih menu Export the Database.
7. Selanjutnya ceklis table apa saja yang ingin diexport. Kemudian next, pada bagian Export format gunakan SQL sebagai file dump. Settingnya bisa liat gambar dibawah ini.
8. Jika sudah selesai selanjutnya beralih ke database yang baru, klik kanan pada database yang baru, kemudian pilih menu Execute SQL from file. Masukkan SQL yang telah didump tadi.
9. Tunggu hingga proses selesai dan database baru siap digunakan.
Untuk database lama silahkan dihapus saja, anda juga bisa tes mencoba proses VACUUM dari database baru, seharusnya sekarang sudah berjalan normal dan tidak muncul error malformat lagi. Sebenarnya daripada pakai software SQLiteStudio, kita bisa menjalankannya melalui command di server. Tapi sewaktu saya mencobanya, proses execute SQL dumpnya tidak berjalan sempurna sehingga saya pun mencoba cara ini. Semoga bermanfaat.