bsddb 4.2.52 DBInvalidArgError 22 Неверный аргумент

Я просто пытаюсь вызвать open в Python, используя bsddb, но сталкиваюсь со следующей ошибкой. Любая идея? Если нет, есть ли способ получить более подробное сообщение об ошибке для отладки, получение дополнительной информации, возможно, поможет мне исследовать немного дальше. Код ошибки без особых подробностей, безусловно, не очень помогает.

DBInvalidArgError: (22, "Неверный аргумент")

Источник:

import bsddb, bsddb.db

...
try:
    e = bsddb.db.DBEnv()
    e.open('/mydir', bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
...

Дополнительная информация: В /mydir у меня есть файл DB_CONFIG:

set_data_dir /mydir/current_data
# 128MB
set_cachesize 0 134217728 1

Обновление: я думаю, что я кое-что здесь, поскольку это имеет отношение к версиям bsddb & bsddb.db:

> $python
> Python 2.5...
> import bsddb, bsddb.db
> print bsddb.__version__, bsddb.db.version()
> 4.4.5 (4, 2, 52)
> bsddb.db.DBEnv().open('/mydir/')
> bsddb.db.DBInvalidArgError: (22, 'Invalid argument')

> $python2.6
> Python 2.6.6...
> import bsddb, bsddb.db
> print bsddb.__version__, bsddb.db.version()
> 4.7.3 (4, 7, 25)
> bsddb.db.DBEnv().open('/mydir/')
> 

Никаких ошибок, если я запускаю его с python2.6.

1 ответ

Да, BerkeleyDB раньше возвращал EINVAL при несовпадении версий.

Более поздние (как и последние 5+ лет) вместо этого BerkeleyDB возвращает DB_VERSION_MISMATCH.

Другие вопросы по тегам