5

我在使用 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")

但是, 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 中收到以下错误“没有这样的文件或目录”。

4

2 回答 2

3

我认为答案应该放在“答案”部分,而不是作为问题的附录,因为这将问题标记为在各种问题列表页面上都有答案。我会为您执行此操作,但如果您也有时间这样做,请对我的回答发表评论,以便我删除它。

引用“有问题的答案”:

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

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

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

尽管如此,这仍然是一个晦涩难懂的问题,最初很难弄清楚。但是感谢从 CLI 检查伯克利数据库文件的问题,我得到了我需要的工具。如果将来有人遇到同样的问题并最终出现在 stackoverflow.com,我会在此处发布

于 2008-10-09T02:16:06.663 回答
0

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

尽管如此,这仍然是一个晦涩难懂的问题,最初很难弄清楚。但是感谢从 CLI 检查伯克利数据库文件的问题,我得到了我需要的工具。如果将来有人遇到同样的问题并最终出现在 stackoverflow.com,我会在此处发布

于 2008-10-11T12:21:41.917 回答