2009-08-26 5 views
1

bsddb.db.DBInvalidArgError: (22, 'Invalid argument - /dbs/supermodels.db: type de fichier inattendu ou format')BDB Python Interface Erreur lors de la lecture BDB

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

+0

Il serait utile si vous pouviez ajouter du code qui montre le contexte de cette erreur. – Shirkrin

Répondre

1

Oui, cela peut certainement être dû à des versions plus anciennes du fichier db, mais il serait utile si vous avez publié le code qui a généré cette exception et la traceback complète. En l'absence de cela, êtes-vous sûr que le fichier de base de données que vous ouvrez est du bon type? 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') 

En * 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) 

Ouverture d'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 services publics db_dump, db_dump185 et db_load qui viennent avec le BdB distribution.

Questions connexes