perl、BerkeleyDB 和 CDS 模式
是否有在 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 的“无效参数”错误。如果我省略它,我会收到关于“环境不包括内存池”(对于哈希或 Btree 数据库)的抱怨。
Is there an example of using CDS mode for BerkeleyDB with perl on a Debian system? I am initializing with:
$db_env = new BerkeleyDB::Env
-Home => "/tmp",
-Flags => DB_CREATE | DB_INIT_CDB | DB_INIT_MPOOL
or die "cannot open environment $BerkeleyDB::Error";
And I am getting an "invalid argument" error for DB_INIT_MPOOL. If I omit it, I get complaints about "environment did not include a memory pool" (for either Hash or Btree databases).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对此的简单答案是删除文件 __db.XXX,其中 XXX 是三个数字。例如,在我的环境中,我有三个文件:__db.001、__db.002 和 __db.003。
我知道这是一篇旧帖子,之前的答案本质上是同一件事,但是当我昨天在谷歌搜索时偶然发现这篇文章时,这个例子会对我有所帮助。
Simple answer to this is to remove the files __db.XXX, where XXX is three numbers. For example in my environment I had three files, __db.001, __db.002 and __db.003.
I know this is an old post and the previous answer essentially is the same thing but the example would have helped me when I stumbled over this post while googling yesterday.
如果您尝试创建一个环境,其中已经存在具有不同配置(不同标志)的环境,那么您通常会收到第一种错误(“无效参数”)。
至于第二个错误(缺少内存池),这是因为您指示 BDB 在没有
DB_INIT_MPOOL
的情况下执行DB_INIT_CDB
- 这是不可能的,CDB 必须执行< /em> 带有内存池。看看这个其他 BDB/CDB 问题,我在那里留下了一些您可能感兴趣的文档的指针。
You're typically getting this first kind of error ("Invalid argument") if you try to create an environment where an environment with a different configuration (different flags) already exists.
As for the second error (missing memory pool), it's because you're instructing BDB to do
DB_INIT_CDB
withoutDB_INIT_MPOOL
- that's not possible, CDB has to go with a memory pool.Take a look at this other BDB/CDB question, I've left some pointers to documentation there that might prove interesting to you.