perl、BerkeleyDB 和 CDS 模式
Posted
技术标签:
【中文标题】perl、BerkeleyDB 和 CDS 模式【英文标题】:perl, BerkeleyDB and CDS mode 【发布时间】:2011-06-14 09:54:07 【问题描述】:有没有在 Debian 系统上通过 perl 为 BerkeleyDB 使用 CDS 模式的示例?我正在初始化:
$db_env = new BerkeleyDB::Env
-Home => "/tmp",
-Flags => DB_CREATE | DB_INIT_CDB | DB_INIT_MPOOL
or die "cannot open environment $BerkeleyDB::Error";
我收到 DB_INIT_MPOOL 的“无效参数”错误。如果我忽略它,我会收到关于“环境不包括内存池”的抱怨(对于 Hash 或 Btree 数据库)。
【问题讨论】:
对我来说很好用,也许 upgrade libdb 加上 4.8 或 5.1 的标题? 【参考方案1】:对此的简单回答是删除文件 __db.XXX,其中 XXX 是三个数字。例如,在我的环境中,我有三个文件,__db.001、__db.002 和 __db.003。
我知道这是一篇旧帖子,之前的答案基本上是一样的,但是当我昨天在谷歌搜索时偶然发现这篇文章时,这个例子会对我有所帮助。
【讨论】:
【参考方案2】:我得到一个“无效参数” DB_INIT_MPOOL 错误。如果我省略它, 我收到有关“环境”的投诉 不包括内存池”(对于 哈希或 Btree 数据库)。
如果您尝试创建一个已经存在具有不同配置(不同标志)的环境的环境,您通常会遇到第一种错误(“无效参数”)。
至于第二个错误(缺少内存池),这是因为您指示 BDB 在没有 DB_INIT_MPOOL
的情况下执行 DB_INIT_CDB
- 这是不可能的,CDB 必须使用内存池 .
看看this other BDB/CDB question,我在那里留下了一些你可能会感兴趣的文档。
【讨论】:
以上是关于perl、BerkeleyDB 和 CDS 模式的主要内容,如果未能解决你的问题,请参考以下文章
在 mac 上安装 BerkeleyDB Perl 模块时出错