今天在處理一個客戶的問題時,發現使用客戶的sqlite數據庫,本地調試代碼報database disk image is malformed,查了下說是文件損壞了,網上有修復的方法,說實話開始也不抱太大希望,因爲之前修復過一次沒成功,上次時間有點久了具體情況不太記得了。這次也就是看本地都有之前下載的現成的工具,修復也不麻煩就又嘗試了下,結果成功了,驚喜。記錄下以防後面忘記。
一、下載sqlte3.exe
通過sqlite官網下載地址:https://www.sqlite.org/download.html
找到windows環境的當前最新版:https://www.sqlite.org/2022/sqlite-tools-win32-x86-3380500.zip
二、使用步驟
1.解壓sqlite-tools文件
將sqlite-tools壓縮文件中的sqlite3.exe文件解壓到您損壞的數據庫目錄下。
2.導出受損數據庫的數據
指令如下:
sqlite3 old.db
sqlite>.output tmp.sql回車 sqlite>.dump回車 sqlite>.quit回車
此時會生產一個備份文件tmp.sql,
用文本編輯軟件打開tmp.sql文件,找到最後一行
將ROLLBACK;修改成Commit;
後保存文件
3.創建新數據庫導入數據到新數據庫
指令如下:(例如數據庫文件爲new.db)
sqlite3 new.db回車 sqlite>.read tmp.sql回車 sqlite>.quit回車
此時會產生一個新數據庫new.db。不出意外的話這個數據庫文件一般可以使用。
注意:一定要把導出的tmp.sql文件最後一行的ROLLBACK;修改成Commit;
借鑑:https://blog.csdn.net/SmartYJC/article/details/124736103