質問

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_dumpdb_dump185db_loadユーティリティをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top