读取BDB时出现Python接口错误

2024-09-23 06:32:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在bsddb.db.dbInvalidArger错误:(22,'无效参数--/dbs/超级模特.db:意外的文件类型或格式')

此错误是由不兼容的BDB版本(1.85或3+)引起的吗?如果是,我如何检查版本、故障排除和解决此错误?在


Tags: 版本db参数格式错误故障dbs文件类型
1条回答
网友
1楼 · 发布于 2024-09-23 06:32:45

是的,这当然可能是由于db文件的旧版本造成的,但是如果您发布生成此异常的代码和完整的回溯,这将有所帮助。在

如果没有此项,是否确定要打开的数据库文件的类型正确?例如,尝试将btree文件当作散列打开会引发您看到的异常:

>>> 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命令来确定数据库的类型,例如

^{pr2}$

打开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发行版附带的db_dumpdb_dump185和{}实用程序。在

相关问题 更多 >