我在使用 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 中收到以下错误“No such file or directory”。
最佳答案
我认为答案应该放在“答案”部分而不是作为问题的附录,因为这将问题标记为在各个问题列表页面上都有答案。我会为您做这件事,但如果您也抽出时间去做,请对我的回答发表评论,以便我将其删除。
引用“有问题的答案”:
验证了这个问题的一切,我最终解决了这个问题。 “没有这样的文件或目录”是由于某些 __db.XXX 文件丢失引起的。使用
bsddb.dbtables.bsdTableDB([dbname],[folder], create=1)
在 db4.4_recover 之后,这些文件已创建,现在一切正常。
不过,这仍然是一个有点晦涩的问题,最初很难弄清楚。但感谢问题 Examining Berkeley DB files from the CLI ,我得到了我需要的工具。如果有人将来遇到同样的问题并最终访问 stackoverflow.com,我会在这里发布它
关于python - 在 python 中打开 berkeley db 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/181648/