问题标签 [gdbm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
518 浏览

json - GDBM 与简单的 JSON、INI 或 YAML 配置文件

我正在研究基于文件的键值数据库,例如GDBM,与使用配置文件相比,我看不到任何真正的优势。这两种技术都允许您将键和值存储在文件中。

GDBM的性能优势, GDBM解析文件更快吗?

0 投票
1 回答
536 浏览

php - Apache/PHP GDBM 因驱动程序初始化失败而导致处理程序失败:gdbm

我有一个使用 PHP 构建 GDBM 文件的系统,然后 Apache 引用该文件来执行基本身份验证。自 1999 年以来,它一直在运行许多版本的 apache 和 PHP,直到现在我正在进行升级以匹配公司政策。

如果我从命令行运行 php(指定适当的 php.ini 文件),则 DBA 功能可以正常工作。

但是,当它从 Apache 内部调用时,它从 PHP 调用 dba_open(...) 我得到:

PHP 是使用以下命令构建的:

我只是根据其他一些评论添加了 --enable-dba 。

gdbm_dump 失败并报告:

但现在已经设法使用命令行 PHP 重建 GDBM 数据文件,它可以正常工作 - 因此似乎可能存在(或曾经)字符编码问题或类似问题

在apache内部它失败了:

我假设它必须与机器 a 上的库不匹配有关,但我想不出更多的方法来调试它。任何帮助或建议将不胜感激。

0 投票
1 回答
60 浏览

ruby - 获取 ruby​​ 上的数据库迭代索引

我正在尝试使用 gdbm 遍历数据库文件,使用我获得的值创建对象并将它们分配给数组。问题是我似乎无法获得迭代索引,我的数组需要它。这是代码:

我得到的错误:

另外,执行块后数据库文件会关闭吗?

0 投票
1 回答
2195 浏览

python-3.x - Python:如何为 dbm.gnu 安装 gdbm

在 Python 3 文档中,它声明如果安装了 dbm 模块,它将使用 gdbm。在我的脚本中,我from dbm.gnu import open as dbm_open用来尝试导入模块。它总是返回异常ImportError: No module named '_gdbm'。我已经访问了 gnu 网站并下载了最新版本。我使用 ./configure --enable-libgdbm-compat,安装了它make; make check; make install,并且安装时没有错误。我可以访问该库的手册页,但仍然无法将其导入 Python 3.5.2 (Anaconda)。如何为 gdbm 安装 Python 模块?

0 投票
0 回答
647 浏览

python - 得到 gdbm 错误:(13, 'Permission denied') — 尽管 posix 权限似乎没问题

我正在使用 python 2.7.6 中的搁置来缓存计算,我遇到了这里描述的问题,用于我生成的搁置文件,并在将文件合并到文件的函数中实现了建议的解决方案othertarget

这两个文件归我所有,记录在本地文件系统中,并将 posix 权限设置为0666,或者等效地,-rw-rw-rw-在我的 Linux Mint 框中,因此已经执行了明显的检查

这里,cachetarget,cache.0other文件。当前工作目录归我所有并具有权限0775,我可以使用 , 等创建文件touchcp没有任何问题,我什至将 my 设置umask0000,因此创建新文件时使用0666, 或等价的-rw-rw-rw-权限.

根据其文档,我什至将实际文件权限与 gdbm.open() 调用中的权限相匹配;然而,无济于事。

更新:通过使用超级用户权限运行python代码sudo,错误发生在同一行;但是有不同的信息:gdbm error: Bad magic number!这很奇怪,因为使用(看似)较低级别的模块(gdbm而不是shelve)正是为了绕过数据库类型检测。

更新#2python whichdb.py在文件上运行返回dbhash;但是,将模块更改为dbhash加载代码仍然会出现以下错误:

以用户身份运行时,但是

使用 sudo 运行时;merge-cache.py是我的代码名称。

这里讨论了这个新错误,与 python 版本有关,但是 (i) 我的 python 版本与那篇文章中的不同,并且 (ii) 文件被创建并稍后使用相同版本的 python 读取。

这个答案表明shelve大型集合“浪费”了,但我报告的问题也发生在较小的数据库中。

问题:如何使用 python-2.7.6 打开这些搁置文件?(升级 python 不是一种选择)。

0 投票
1 回答
296 浏览

ruby - dyld:惰性符号绑定失败:找不到符号:GDBM gem 的 __gdbm_lock_file 错误

当我尝试使用Ruby GDBM gem时,我遇到了这个奇怪的错误。宝石曾经工作过。现在,当我调用它时,我得到了这个错误(跨越许多不同版本的 ruby​​):

我尝试了许多 ruby​​ 版本,直接从 Rbenv 执行,甚至安装/卸载我的 brew GDBM 安装。/usr/local/Cellar/gdbm/1.12 当我从命令行(例如)手动调用它时,我的 GDBM Brew 安装在GDBM 工作gdbm_load

我能想到的唯一改变是我现在在 OSX El Capitan 10.11.6 上运行。或者我以某种方式对可能导致此错误的配置或 PATH 文件进行了更改。

我该如何解决这个问题?

0 投票
3 回答
158 浏览

c - 将 struct 转换为字节数组并存储在 db 中。读取 db 并获取字节数组以在 C 中重新创建结构

大家好,很抱歉问,但我可以找到任何合适的解决方案。我正在研究一个文件系统,我将每个文件节点作为键值对保存在 GDBM 数据库中。我有一个具有一些属性的结构,我将其转换为字节数组

结构mystruct:

我将其转换为字节数组

为了存储在数据库中,我们使用如下数据结构:

我填写基准结构如下:

现在我将 GDBM 存储为键值对

然后在另一个文件中,我读取了我存储的数据并尝试将其重新转换为结构

它打印以下内容:

它设法恢复结构,但 char* 的数据丢失了。仅涵盖整数数据。知道为什么会这样吗?如何解决?它不能通过存储字节数组来解决,如何将字节数组转换为十六进制或 base64 并将其存储。

我真的在努力解决这个问题。提前谢谢你。

0 投票
1 回答
75 浏览

database - Berkley gdbm 通常如何使用?

gdbm 是一个简单的键值存储。我怀疑它的使用是基于各种技巧。例如,从最终用户的角度来看,我想要一个名为 的记录user/project,它应该关联以下内容:

  • 协议,git:// 或 http://
  • domain like: github.com, bitbucket.com, etc. – 形成 url like github://user/project
  • 启用/禁用
  • 加载方法——这里有 3 种不同的方法,如“native”、“binary”、“normal”
  • 主文件——“main.c”,或其他
  • 忽略文件 - 用“&”分隔的字符串和要忽略的文件路径
  • depth – 要下载的提交数

我认为这就足够了。我的意思是现实世界的用途是复杂的,而 Gdbm 似乎并没有为自己辩护。有没有办法将其用于上述场景?

0 投票
1 回答
95 浏览

openwrt - 如何在openwrt上安装gdbm

我以前从未使用过 openwrt,但现在我需要在 openwrt 上安装 gdbm 包。你能建议我怎么做吗?

Make 无法在 openwrt 上运行

下载 gdbm 源并编译它们是在配置时给我的

配置:错误:在/HDD/gdbm-1.13': configure: error: C compiler cannot create executables Seeconfig.log' 以获取更多详细信息

请帮我

0 投票
3 回答
5572 浏览

python - GDBM 不适用于 Python 3.6 和 anaconda

我在 anaconda 环境中使用 Python 3.6。我安装了 GDBM

安装很顺利,但是我不能dbm.gnu从 Python 中使用:

_gdbm即使实际安装了 GDBM ,Python 也似乎不包含该模块。

这是一个已知问题吗?我该如何解决?

谢谢!