【发布时间】:2015-11-26 19:33:00
【问题描述】:
我在一个项目中使用 BerkeleyDb。 我有一些由几个文件组成的环境。有时,我需要删除其中一些文件。
当我使用文件系统删除文件时,打开环境会引发错误没有这样的文件或目录。
BerkeleyDb 环境中是否存在安全删除文件的方法?
【问题讨论】:
标签: berkeley-db
我在一个项目中使用 BerkeleyDb。 我有一些由几个文件组成的环境。有时,我需要删除其中一些文件。
当我使用文件系统删除文件时,打开环境会引发错误没有这样的文件或目录。
BerkeleyDb 环境中是否存在安全删除文件的方法?
【问题讨论】:
标签: berkeley-db
要删除数据库,您需要绝对确定环境中不存在对该数据库的引用。最简单的方法如下:
db->remove() 从应用程序中删除数据库。dbenv->txn_checkpoint() 刷新所有更改,检查日志,然后刷新日志。dbenv->txn_checkpoint() 与DB_FORCE 标志一起使用以推动另一个检查点,确保在恢复环境时不会尝试恢复上一个检查点之前的数据库。我知道,第 3 步听起来很疯狂。也许不再需要它了。但在不久的过去,它肯定是需要的。当然需要步骤 1 和 2。您需要进行试验,看看您的应用程序是否需要第 3 步。
【讨论】: