我在项目中使用BerkeleyDb。 我有一些由几个文件组成的环境。有时,我需要删除部分文件。
当我使用文件系统删除文件时,打开环境会引发错误没有此类文件或目录。
在BerkeleyDb环境中是否存在方式安全删除文件?
答案 0 :(得分:0)
要删除数据库,您需要绝对确定环境中不存在对数据库的引用。最简单的方法如下:
db->remove()
从应用程序中删除数据库。dbenv->txn_checkpoint()
刷新所有更改,检查日志,然后刷新日志。dbenv->txn_checkpoint()
标志的DB_FORCE
再推送一个检查点,确保在恢复环境时不会尝试恢复最后一个检查点之前的数据库。我知道,第3步听起来很疯狂。也许它不再需要了。但在不久的将来,它肯定是需要的。当然需要步骤1和2。您需要进行试验,看看您的应用是否需要第3步。