1. 程式人生 > 其它 >sqlite3資料庫提示database disk image is malformed 解決辦法

sqlite3資料庫提示database disk image is malformed 解決辦法

在嵌入式產品中,用sqlite3進行資料儲存是非常常用且有效的方法。

但是最近在專案中遇到了資料庫被損壞的情況,具體表現為使用資料庫管理軟體開啟資料庫後,使用sql語句對資料進行處理時,提示 database disk image is malformed ,如下圖所示:

使用sqlite3命令列查詢資料條數:

解決辦法:

1、使用資料庫管理工具進行修復

安裝SQLite Expert Professional資料庫管理軟體,參考:https://blog.csdn.net/fangye945a/article/details/96908513

使用SQLite Expert Professional 開啟資料庫,點選Database選項頁,點選Repair按鍵進行修復。

選擇new file,指定修復完成的資料庫目標路徑,點選start按鈕開始修復,如果資料庫比較大,耐心等待即可。

修復完成的資料庫如下所示:

2、通過終端命令列對資料庫進行修復

1、使用sqlite3命令開啟損壞的資料庫,將關鍵資料匯出到臨時檔案。

sqlite3 db20190704_001.db3
sqlite>.output tmp.sql
sqlite> .dump
sqlite> .quit
2、將臨時檔案匯入到新的資料庫。

sqlite3 repair.db3
sqlite>.read tmp.sql
sqlite>.quit
若在執行.output tmp.sql時報錯,但是資料匯出大部分了,使用Notepad++開啟臨時檔案tmp.sql即可看到一條條SQL語句。

按照損壞的資料庫表格式建立新的空資料庫,將資料庫匯出到臨時檔案,比對兩個臨時檔案,即可看到損壞的地方。SQL語句拷貝到新建的臨時檔案中即可。

開啟新生成的資料庫,執行步驟2,對手動修改好的臨時檔案進行讀取操作,即可完成修復。

修復完成後,執行SQL語句: