【问题标题】:Connecting to DB2 from Node.js on Linux-platform在 Linux 平台上从 Node.js 连接到 DB2
【发布时间】:2015-06-09 20:46:07
【问题描述】:

我正在尝试从 node.js 应用程序连接到 DB2。我决定使用db2 node module。安装db2.js的说明首先告诉你像这样安装node-gyp

sudo npm install -g node-gyp

这似乎对我有用。
然后我尝试使用以下命令安装 db2.js:

sudo npm install -g db2

然后我得到这个错误:

...
cc1plus: error: unrecognized command line option "-std=c++0x"
...
gyp ERR! node -v v0.10.9
gyp ERR! node-gyp -v v0.9.6

看着prereqs for node-gyp,它说我需要gcc。在我的系统上对 gcc 进行操作表明 -std 选项仅支持一些非常旧的编译器,例如 c++98gnu99 等。我有 gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50)

所以我有几个问题。还有其他方法可以从节点连接到 db2 吗?如果我继续使用 db2.js,那么我现在需要做什么,升级我的 gcc 或安装 c++0x 编译器? (我认为那是 C++ 版本 11)。

祝我好运。

编辑:

我在我的 linux 服务器上升级 gcc 时遇到问题,所以我尝试在我的树莓派上安装作为测试:

sudo npm install -g node-gyp
cd /usr/lib/node_modules
sudo git clone https://github.com/herzi/db2.js.git
sudo node-gyp configure
sudo node-gyp build

在最后一个命令我得到这个错误:

In file included from ../src/binding.cc:3:0:
../src/connection.hh:6:20: fatal error: sqlcli.h: No such file or directory
compilation terminated.

我猜那是 DB2 Client 头文件,所以我可能也需要安装它。

编辑 2

我在我的系统上的不同目录中安装了gcc。然后我将/usr/bin 中的符号链接更改为gccg++,以指向我的新gcc 和g++(在gcc 内部)。现在我得到了与我的 pi 相同的 sqlcli.h 错误。是时候获取 DB2 客户端了。

嗯。我有 db2 客户端 9.1.2。根据 db2 binding.gyp 文件中的一些搜索,我需要 9.7。

编辑 3

我安装了“IBM Data Server Runtime Client V9.7”,但/opt/IBM/db2/V9.7/include 文件夹中没有sqlcli.h!我在另一台机器上有一个 V9.1.3,它确实有一个包含文件夹。所以我安装了我的"IBM Data Server Client 9.7" using an old blog post 来帮助我。现在我从 node-gyp 构建中收到一个错误,即未声明 strcmp。我敢打赌我需要设置一个 lib 包含或节点环境变量。

【问题讨论】:

  • 为什么投反对票?这与Connecting DB2 from Node.js on Windows-platform 的问题几乎相同,后者有 3 个赞成票。
  • 只需升级你的 gcc 编译器。不知道为什么减去。做某事总是有不同的方法,没有人知道什么是对你来说“最好的方法”。
  • 仅供参考,这现在正式成为一个兔子洞。我真的很想这样做,但我不知道会有多快的进展。
  • 看起来我的下一步是:Build gcc 在 linux 服务器上。为了笑,在我的 pi 上安装 DB2 Client。
  • 当。建设gcc 是史诗般的!它已经建造了几个小时。

标签: c++ node.js gcc c++11 db2


【解决方案1】:

您应该使用IBM's node module 连接到您的DB2 数据库。它肯定适用于 linux,但对于 OS X,您需要查看这个问题:How to connect to DB2 SQL database with node JS?

【讨论】:

  • 我不确定 API 何时更新,可能是在您查看他们正在使用此 API 之后不久。尽管如此,我很乐意提供帮助,尽管有点延迟。
【解决方案2】:

您可以将字符串函数的包含文件(例如#include <cstring>)添加到src/connection.cc。那应该启用字符串功能;也许你需要用std::strcmp() 替换strcmp()

【讨论】:

  • 谢谢赫兹! db2.js 很棒。
【解决方案3】:

好的。我最终为 db2.js 找到了forking the git repo,并为该项目贡献了一些工作。现在我可以编译它了。希望一旦出现拉动,我也可以使用npm 进行安装,而无需编辑源代码和手动构建。

我发现了先决条件:

  • 海合会
  • g++
  • DB2 Connect 或客户端 V9.7(不是运行时客户端,缺少 sqlcli.h)
  • 节点-gyp
  • node.js(显然)

首先感谢 herzi 创建 db2.js!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多