bsddb.db.DBInvalidArgError:(22, '无效的参数 - /dbs/supermodels.db:意想不到文件类型或格式')

这是错误(1.85或3+)不相容BDB的版本的结果?如果是这样,我怎么查版本,故障诊断和解决这个问题?

有帮助吗?

解决方案

是的,这当然可能是由于旧版本的数据库文件,但如果您发布生成此异常并全面追踪代码,这将有助于。

在没有这一点,你确定你正在打开数据库文件是正确的类型?例如,试图打开一个文件,B树,如果它是一个哈希提高,你所看到的异常:

>>> import bsddb
>>> bt = bsddb.btopen('bt')
>>> bt.close()
>>> bsddb.hashopen('bt')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/bsddb/__init__.py", line 298, in hashopen
    d.open(file, db.DB_HASH, flags, mode)
bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- ./bt: unexpected file type or format')

在* nix中可以使用的file命令,e.g通常确定分贝的类型。

$ file /etc/aliases.db cert8.db 
/etc/aliases.db: Berkeley DB (Hash, version 8, native byte-order)
cert8.db:        Berkeley DB 1.85 (Hash, version 2, native byte-order)

打开1.85版本文件失败,出现相同的异常:

>>> db = bsddb.hashopen('/etc/aliases.db')    # works, but...
>>> db = bsddb.hashopen('cert8.db')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/bsddb/__init__.py", line 298, in hashopen
    d.open(file, db.DB_HASH, flags, mode)
bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- ./cert8.db: unexpected file type or format')

如果您需要迁移的数据库文件,你应该看看附带BDB distribuition的db_dumpdb_dump185db_load工具。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top