Site icon Mr. 沙先生

茶包專欄:SQLite 出現『database disk image is malformed』錯誤解決方式

這幾天遇到某個站台使用 SQLite 的時候在某一張 table 出現『database disk image is malformed』的問題導致整張 table 無法讀取

 

對於這種狀況通常是 table page 損壞了,但這一篇的狀況比較特殊

 

先將 database 匯出

$ sqlite3 db.sqlite

sqlite>.output db.sql
sqlite>.dump
sqlite>.quit

 

 

將 db.sql 匯入新建的 sqlite 進行測試

$ sqlite new.sqlite

sqlite>.read db.sql
sqlite>.quit

 

在此篇案例,.read 匯入 sql 檔的時候出現 insert 錯誤訊息,原來開發者在匯入資料的時候誤將 table1 的資料 insert 到 table2 的資料,格式完全不對並且 key 錯誤,所以導致 table 損壞

 

但這代表 SQLite 本身並沒有這樣的防護機制,所以導致 insert 錯誤的資料後 table 就壞了,如果無法避免人為的疏失,那還是少用 SQLite 的好!

 

 

參考資料:

how_to_corrupt

 

 

Exit mobile version