BDBのPythonインターフェイスエラーBDBを読みます
-
20-09-2019 - |
質問
bsddb.db.DBInvalidArgError:(22、 '無効な引数 - /dbs/supermodels.db:予期しないファイルの種類または形式')
このエラーは、互換性のないBDBのバージョン(1.85または3+)の結果ですか?もしそうなら、どのように私は、トラブルシュート、バージョンをチェックして、このエラーを解決するのですか?
解決
はい、これは確かに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
コマンドを使用してDBの種類を判別することができます。
$ 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_dump
、db_dump185
とdb_load
ユーティリティをご覧ください。
所属していません StackOverflow