sqlite異常掉電相關問題(1)

2021-07-11 08:10:22 字數 690 閱讀 6683

sqlite3缺省會開啟journal,為了進行rollback。但是在突然斷電的情況下,journal檔案很容易就損壞了。

目前還沒有發現資料庫檔案本身被損壞的情況。

一旦journal檔案損壞,就沒法開啟資料庫檔案了。但是可以把journal機制關閉。

一旦journal檔案損壞,還會造成檔案系統損壞,journal檔案都無法刪除掉。

對journal檔案所在目錄進行ls的時候,會顯示如下資訊:

ls: ./資料庫名字-journal : input/output error

出現這種情況,只能使用e2fsck命令進行修復了,命令如下:

先umount 分割槽

e2fsck  -y  /dev/裝置檔案

使用sqlite3_exec執行"pragma journal_mode = off;"即可關閉journal檔案

關閉journal檔案後就不能使用事務機制了,否則,操作會報錯。

cannot commit - no transaction is active

所以如果要關閉journal,最好將關閉journal的操作放到所以操作之前,也就是開啟資料庫之後立即關閉。

經測試,發現關閉journal後,突然斷電,資料庫檔案總是消失,不知道為什麼。最後找到乙個辦法,

在開啟資料庫後,立即執行,system("sync"),就沒問題了。

java異常處理相關 1

1.error與exception的區別 2.exception與runtimeexception的區別 3.trycatch finally執行順序 public class x catch error ex finally exception也是throwable的子類,按照checked un...

JAVA關於異常的相關問題

異常處理是程式的重要組成部分。runtimeexception 點這裡 ioexception io異常 nullpoiterexception 空指標異常 classcastexception 型別轉換異常 arrayindexoutofbound ception 陣列越界異常 numberfor...

opencv相關問題整理(1)

1.如何將mat 轉換成iplimage,或者iplimage轉換成mat?iplimage cvgetimage const cvarr arr,iplimage image header cvmat cvgetmat const cvarr arr,cvmat header,int coi nu...