對於這種狀況通常是 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
Orignal From: 茶包專欄:SQLite 出現『database disk image is malformed』錯誤解決方式
沒有留言:
張貼留言