python - 在 python 中打开 berkeley db 时出现问题

标签 python database berkeley-db

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

相关文章:

database - 仅 1 个数据库的 Postgres 重新分配拥有

mysql - 通过 pdo 停止查询

c - 如何让 DBCursor->get(...) 识别我为 key.data 和 data.data 分配的内存

java - 推荐一个快速且可扩展的持久化 Map - Java

python - 在 Python 中将年份转换为 12/31/xxxx 格式

python - 将 32 位数字分解为单独的字段

python - 如何使用 AWS APIGateway 和 Lambda 返回多个 cookie?

python - 哪些特征可以帮助对句尾进行分类?序列分类

mysql - 重命名 MySQL 数据库

java - com.sleepycat.db.DatabaseException : Permission denied Exception while creating DB Env