2008-10-08 9 views
3

J'ai des problèmes pour ouvrir un db berkeley en python en utilisant bdtables. Comme bdtables est utilisé par la bibliothèque que j'utilise pour accéder à la base de données, j'en ai besoin pour fonctionner.Problème lors de l'ouverture de berkeley db en python

Le problème semble être que l'environnement db que j'essaie d'ouvrir (j'ai une copie de la base de données à ouvrir), est la version 4.4 tandis que libdb est la version 4.6. Je reçois l'erreur suivante en utilisant bsddb.dbtables.bsdTableDB ([dbname], [dossier]):

(-30972, "DB_VERSION_MISMATCH: Database environment version mismatch -- Program version 4.6 doesn't match environment version 4.4") 

Cependant, bsddb.btopen ([dbname]) fonctionne.

J'ai également essayé d'installer db4.4-util, db4.5-util et db4.6-util. Essayer d'utiliser db4.6_verify résultats dans:

db4.6_verify: Program version 4.6 doesn't match environment version 4.4 
db4.6_verify: DB_ENV->open: DB_VERSION_MISMATCH: Database environment version mismatchs 

résultats db4.4_verify dans l'ordinateur juste suspendu, et rien ne se passe.

Enfin, si je lance db4.4_recover sur la base de données, cela fonctionne. Cependant, après, j'obtiens l'erreur suivante 'Aucun fichier ou répertoire' en python.

Répondre

3

Je pense que les réponses devraient aller dans la section "réponse" plutôt que comme un addendum à la question car cela marque la question comme ayant une réponse sur les différentes pages de la liste des questions. Je vais le faire pour vous, mais si vous vous en occupez, laissez un commentaire sur ma réponse pour que je puisse le supprimer.

Citant "réponse en question":

Vérification tout dans cette question, j'ai finalement résolu le problème. Le 'No tel fichier ou répertoire' est provoqué par certains fichiers __db.XXX manquants. En utilisant

bsddb.dbtables.bsdTableDB([dbname],[folder], create=1) 

après db4.4_recover, ces fichiers ont été créés et tout fonctionne maintenant. Pourtant, c'était un peu un problème obscur, et d'abord difficile à comprendre. Mais grâce à la question Examining Berkeley DB files from the CLI, j'ai eu les outils dont j'avais besoin. Je vais juste poster ici si quelqu'un se retrouve avec le même problème à l'avenir et se retrouver à stackoverflow.com

+0

J'ai posté moi-même la réponse non. Dommage que je ne puisse pas accepter ma propre réponse, je pense que c'est la 2ème question que j'ai fini par me répondre :). – Staale

+0

Peut-être le temps est venu de supprimer cela? –

0

Merde, vérifiant tout dans cette question j'ai finalement résolu le problème. Le 'No tel fichier ou répertoire' est provoqué par certains fichiers __db.XXX manquants. En utilisant bsddb.dbtables.bsdTableDB ([nombase], [dossier], create = 1) après db4.4_recover, ces fichiers ont été créés et tout fonctionne maintenant. Pourtant, c'était un peu un problème obscur, et d'abord difficile à comprendre. Mais grâce à la question Examiner les fichiers Berkeley DB de la CLI, j'ai eu les outils dont j'avais besoin. Je vais juste poster ici si quelqu'un se retrouve avec le même problème à l'avenir et se retrouver à stackoverflow.com

Questions connexes