2014-06-09 104 views
0

因此,我們使用的是Berkeley DB,而我們的API使用BDB C++ API。我們最近在數據庫中添加了一些新的索引。在添加新索引之後,我們需要遷移所有舊數據以在舊記錄中添加新索引,並且自那時起,每當我們啓動寫入數據庫的進程時,就會得到以下警告:Berkeley DB環境問題

BDB2058警告:加入環境時忽略DB_SET_LOCK_TIMEOUT。 BDB2059警告:加入環境時忽略DB_SET_TXN_TIMEOUT。

如果我對這些問題有正確的理解,現在我們認爲他會因爲忽略我們設置的超時而死鎖。當我試圖隨機寫入數據庫時​​,我也看到了這個過程。解決這個問題的唯一方法是立即重新啓動該過程。我的問題是,如果有人知道什麼會導致這些警告,或者我可能會去調試環境實例來找出?任何幫助或建議,將不勝感激。

回答

0

超時值可能是dbenv環境的持久全局屬性,而不是dbenv每個使用實例的屬性。

您可能會嘗試在數據庫上運行db_recover以刪除__db.NNN文件。

否則,您可能有多個進程共享一個dbenv,並且警告指出後面的進程正在嘗試更改已設置的屬性。