在python中打开berkeley db的问题

Sta*_*ale 5 python database berkeley-db

我在使用 bdtables 在 python 中打开 berkeley db 时遇到问题。由于 bdtables 被我用来访问数据库的库使用,我需要它才能工作。

问题似乎是我试图打开的 db 环境(我有一个要打开的数据库副本)是 4.4 版,而 libdb 是 4.6 版。使用 bsddb.dbtables.bsdTableDB([dbname],[folder]) 时出现以下错误:

(-30972, "DB_VERSION_MISMATCH: Database environment version mismatch -- Program version 4.6 doesn't match environment version 4.4")
Run Code Online (Sandbox Code Playgroud)

但是, bsddb.btopen([dbname]) 有效。

我也尝试过安装 db4.4-util、db4.5-util 和 db4.6-util。尝试使用 db4.6_verify 结果:

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
Run Code Online (Sandbox Code Playgroud)

db4.4_verify 导致计算机只是挂了,什么也没发生。

最后,如果我在数据库上运行 db4.4_recover,那就行了。但是,之后我在 python 中收到以下错误“没有这样的文件或目录”。

pax*_*blo 3

我认为答案应该放在“答案”部分,而不是作为问题的附录,因为这标志着问题在各个问题列表页面上都有答案。我会为你做这件事,但是,如果你也抽出时间来做这件事,请在我的答案上发表评论,以便我可以删除它。

引用“有问题的答案”:

验证了这个问题的所有内容,我最终解决了这个问题。“没有这样的文件或目录”是由于某些 __db.XXX 文件丢失造成的。使用

bsddb.dbtables.bsdTableDB([dbname],[folder], create=1)
Run Code Online (Sandbox Code Playgroud)

db4.4_recover 之后,这些文件已创建,现在一切正常。

尽管如此,这仍然是一个有点晦涩难懂的问题,最初很难弄清楚。但由于问题Examining Berkeley DB files from the CLI,我得到了我需要的工具。如果将来有人遇到同样的问题并最终访问 stackoverflow.com,我会将其发布在这里