Question

bsddb.db.DBInvalidArgError: (22, 'Invalid argument - /dbs/supermodels.db: type ou format de fichier inattendu)

est cette erreur à la suite des versions incompatibles BDB (1,85 ou 3+)? Si oui, comment puis-je vérifier les versions, dépanner et résoudre cette erreur?

Était-ce utile?

La solution

Oui, cela pourrait certainement être dû aux anciennes versions du fichier db, mais il serait utile si vous le code qui courant généré cette exception et la pleine retraçage.

En l'absence de cela, vous êtes sûr que le fichier de base de données que vous ouvrez est du type correct? Par exemple, en essayant d'ouvrir un fichier btree comme si elle est un hachage soulève l'exception que vous voyez:

>>> 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 vous pouvez généralement déterminer le type de db en utilisant la commande file, par exemple.

$ 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)

Ouvrir un fichier 1,85 version échoue avec la même exception:

>>> 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')

Si vous devez migrer les fichiers de base de données, vous devriez regarder les utilitaires db_dump, db_dump185 et db_load qui viennent avec la distribuition BdB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top