1
bsddb.db.DBInvalidArgError BDB Python的接口錯誤版本(1.85或3+)?如果是這樣,我該如何檢查版本,解決這個錯誤?當讀BDB
bsddb.db.DBInvalidArgError BDB Python的接口錯誤版本(1.85或3+)?如果是這樣,我該如何檢查版本,解決這個錯誤?當讀BDB
是的,這當然可能是由於舊版本的db文件,但如果您發佈生成此異常的代碼和完整的回溯,它將會有所幫助。
如果沒有這個,你確定你打開的數據庫文件是正確的類型嗎?例如,試圖打開一個文件,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
命令,例如確定數據庫的類型
$ 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的db_dump
,db_dump185
和db_load
公用事業distribuition。
如果您可以添加一些代碼來顯示此錯誤的上下文,將會有所幫助。 – Shirkrin 2009-08-26 21:09:32