Perl, BerkeleyDB и режим CDS

Есть ли пример использования режима CDS для BerkeleyDB с perl в системе Debian? Я инициализирую:

$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).


person adamo    schedule 14.06.2011    source источник
comment
У меня работает нормально, возможно, обновить libdb плюс заголовки до 4.8 или 5.1?   -  person daxim    schedule 14.06.2011


Ответы (2)


И я получаю ошибку «недопустимый аргумент» для DB_INIT_MPOOL. Если я его опускаю, я получаю жалобы на то, что «среда не включает пул памяти» (для баз данных Hash или Btree).

Обычно вы получаете этот первый вид ошибки («Недопустимый аргумент»), если пытаетесь создать среду, в которой уже существует среда с другой конфигурацией (другими флагами).

Что касается второй ошибки (отсутствует пул памяти), это потому, что вы инструктируете BDB делать DB_INIT_CDB без DB_INIT_MPOOL - это невозможно, CDB должен работать с пулом памяти.

Взгляните на этот другой вопрос BDB / CDB, я оставил там несколько указателей на документацию, которая может быть вам интересна .

person Lumi    schedule 15.06.2011

Простой ответ - удалить файлы __db.XXX, где XXX - это три числа. Например, в моей среде у меня было три файла: __db.001, __db.002 и __db.003.

Я знаю, что это старый пост, и предыдущий ответ, по сути, то же самое, но пример помог бы мне, когда я вчера наткнулся на этот пост во время поиска в Google.

person Ash    schedule 14.03.2013