修復損毀的 SQLite DB 資料庫
修復損毀的 SQLite DB 資料庫¶
當遇到 SQLite DB 資料庫損毀時,完全無法讀取資料,只見到錯誤訊息時,還有一個方法可以嘗試看看。
上圖的上半部,我們做了將壞掉資料庫匯出的動作;圖的下半部,我們將匯出的檔案匯入新的資料庫。
匯出資料庫
- 使用 sqlite3 {檔案名稱},開啟壞掉的資料庫。
- 使用 .output tmp.sql ,在這裡 output 前面有個點,請各位要注意。這是指定資料匯出到 tmp.sql 檔案的方法。
- 使用 .dump 的指令才開始真正的匯出資料到 tmp.sql 檔案內,這過程要看原始資料庫大小,越大時間越長。
- 匯出完成 .quit 離開 sqlite3。
匯入資料庫
- 使用 sqlite3 {新檔案名稱},在這裡任意建立一個新的資料庫。
- 使用 .read tmp.sql 讀取 tmp.sql 資料,並且匯入到 {新檔案名稱|新資料庫}中。
- 匯入完成後, .quit 離開 sqlite3。
以上是個人成功的經驗,一個 5GB 的損毀資料庫,經過救援之後,變成 6GB ,但卻運作正常無誤。 如果有遇到類似的狀況,不妨試一試這個方法。
注意:
- 若你 dump 出來的檔案最後一行是 ROLLBACK ,請改為 COMMIT 。因為 ROLLBACK 會在你還原結束後執行,執行之後新資料庫會被清空。
Comments
Post a Comment