【问题标题】:Problem opening berkeley db in python在 python 中打开 berkeley db 的问题
【发布时间】:2013-11-08 15:14:29
【问题描述】:

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

【问题讨论】:

    标签: python database berkeley-db


    【解决方案1】:

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

    引用“有问题的答案”:

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

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

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

    不过,这是一个有点晦涩难懂的问题,最初很难弄清楚。但是感谢Examining Berkeley DB files from the CLI 的问题,我得到了我需要的工具。如果将来有人遇到同样的问题并最终出现在 stackoverflow.com 上,我将在此处发布它

    【讨论】:

    • 我自己也发布了答案,没有。很遗憾我不能接受自己的答案,我想这是我最终回答自己的第二个问题:)。
    • 也许是时候删除这个了?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多