搜尋leveldb看到了乙個討論:
還在 地方貼出了**。
他的主要問題是:兩個執行緒 同時 進行 快速 開啟leveldb 操作 關閉leveldb。而且 還是 while(1){}迴圈級別 ,,,leveldb傷不起啊 太快了,導致leveldb可能有所損壞。
所以 leveldb程式開發方法應該是: 在程序 開始 開啟leveldb,然後各個執行緒 隨便使用。最後程式 完畢的時候 delete db。這個在程式 關閉時候 也會自動呼叫。當然手動呼叫更好了。
我還學到了
status=leveldb::destroydb(dbpath,option);
和 status=leveldb::repairdb(dbpath,option);
其中 dbpath="/tmp/test_db/"
leveldb::options option;
但是我也發現了,如果在程式main開始的時候(已經建立db物件了),使用destroydb,接下來還可以操作,delete db後,資料庫會被清空!
如果使用repairdb,然後後面對資料庫操作,在deletedb,leveldb會亂掉的。。。所以 兩個操作完畢後 立即 delete db;再建立db物件,再操作 才安全。
補充:譯文 leveldb:乙個快速輕量級的key-value儲存庫(譯) ,原文:
這兄弟 翻譯的 比我好多了!!!!!!!很讚!
SQLite資料庫損壞修復
the database disk image is malformed 進入到sqlite3操作指定的資料庫 或者直接 sqlite3 e item.db 操作此資料庫 sqlite databases main e item.db sqlite tables 顯示列表 檢查資料庫是否損壞 sql...
資料庫表損壞的修復
用命令列訪問出現 開始時使用myisamchk r o home test test user.myi進行修復,出現錯誤 myisamchk error myisam sort buffer size is too small。df發現是mysql temp目錄太小,此錶太大。更改my.cnf檔案修...
SQLite資料庫損壞與修復
導致sqlite資料庫損壞的情況大致可歸結為4類 檔案覆蓋問題 檔案鎖問題 資料同步問題 記憶體問題 sqlite資料庫檔案被覆蓋是可能的,畢竟是乙個普通的磁碟檔案,意味著所有的程序都可以開啟和覆蓋,所以不可能完全避免檔案覆蓋的情況。1.多執行緒寫資料庫問題。sqlite資料庫是支援多程序併發讀寫,...