【问题标题】:How to determine the exact reason, why does berkeley db return EINVAL on db->open?如何确定确切原因,为什么 berkeley db 在 db->open 上返回 EINVAL?
【发布时间】:2012-05-24 07:25:19
【问题描述】:

在berkeley db的文档中,说明原因可能有以下几种:

指定了无效的标志值或参数(例如,未知的数据库类型、页面大小、散列函数、填充字节、字节顺序)或与指定数据库不兼容的标志值或参数。 指定了 DB_THREAD 标志,并且快速互斥体不适用于此架构。

DB_THREAD 标志被指定给 DB->open,但没有被指定给 DB_EN​​V->open 调用,用于创建 DB 句柄的环境。

使用 DB_THREAD 标志或提供的数据库环境支持事务处理指定了支持平面文本文件。

我使用的唯一标志是 DB_CREATE,数据库类型是 DB_BTREE。

我想知道导致 EINVAL 的确切原因,但我没有找到任何可以在“DB”结构中帮助我的详细配置(在 DB_EN​​V 中,他们有 set_verbose 方法,但我不使用 DB_EN​​V) .

【问题讨论】:

    标签: c database berkeley-db verbosity


    【解决方案1】:

    您可以试试DB->err()these examples。如果我没记错的话,可以设置一个环境变量(shell 环境变量 export X=Y),并且库会开始将错误消息打印到 stderr,但它可能是 DB Env 的东西......对不起,不能立即查找信息。

    【讨论】:

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