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

问题似乎是我试图打开的数据库环境(我打开了数据库的副本),版本为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")

但是,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

db4.4_verify会导致计算机挂起,而且什么也没发生。

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

有帮助吗?

解决方案

我认为答案应该放在“回答”中。部分而不是作为问题的附录,因为这标志着问题在各个问题列表页面上有答案。我会帮你做的,但如果你还要这样做,请在我的答案上留言,这样我就可以删除它。

引用“有问题的答案”:

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

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

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

然而,这是一个不为人知的问题,最初很难弄明白。但是由于从CLI检查Berkeley DB文件的问题,我得到了我需要的工具。如果有人在将来遇到同样的问题并最终到达stackoverflow.com,我会在这里发布。

其他提示

该死的,在这个问题中验证一切我最终解决了问题。 “没有这样的文件或目录”是由一些__db.XXX文件丢失引起的。在db4.4_recover之后使用bsddb.dbtables.bsdTableDB([dbname],[folder],create = 1),这些文件已经创建,现在一切正常。

然而,这是一个不为人知的问题,最初很难弄明白。但是由于CLI中检查Berkeley DB文件的问题,我得到了我需要的工具。如果有人在将来遇到同样的问题并最终到达stackoverflow.com,我会在这里发布。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top