2013-04-11 2 views
1

J'essaie simplement d'appeler open en utilisant Python en utilisant bsddb mais en cours d'exécution dans l'erreur suivante. Une idée? Sinon, y a-t-il un moyen d'obtenir un message d'erreur plus détaillé pour le débogage, obtenir plus d'informations peut probablement m'aider à étudier un peu plus loin. Un code d'erreur sans beaucoup de détails n'aide certainement pas beaucoup.bsddb 4.2.52 DBInvalidArgError 22 Argument invalide

DBInvalidArgError: (22, 'Invalid argument')

Source:

import bsddb, bsddb.db 

... 
try: 
    e = bsddb.db.DBEnv() 
    e.open('/mydir', bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL) 
... 

Informations complémentaires: En/monrep J'ai un fichier DB_CONFIG:

set_data_dir /mydir/current_data 
# 128MB 
set_cachesize 0 134217728 1 

Mise à jour: Je pense que je suis sur quelque chose ici comme a quelque chose à voir avec bsddb & bsddb.db versions:

> $python 
> Python 2.5... 
> import bsddb, bsddb.db 
> print bsddb.__version__, bsddb.db.version() 
> 4.4.5 (4, 2, 52) 
> bsddb.db.DBEnv().open('/mydir/') 
> bsddb.db.DBInvalidArgError: (22, 'Invalid argument') 

> $python2.6 
> Python 2.6.6... 
> import bsddb, bsddb.db 
> print bsddb.__version__, bsddb.db.version() 
> 4.7.3 (4, 7, 25) 
> bsddb.db.DBEnv().open('/mydir/') 
> 

Pas d'erreur si je l'exécute avec python2.6.

Répondre

0

Oui, BerkeleyDB renvoyait EINVAL sur une version non concordante.

Plus récent (comme les 5 dernières années) BerkeleyDB renvoie DB_VERSION_MISMATCH à la place.

Questions connexes