3

我正在尝试从 node.js 应用程序连接到 DB2。我决定使用db2 节点模块。首先安装的说明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

查看node-gyp的先决条件,它说我需要 gcc。在我的系统上对 gcc 做一个 man 表明该-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/binfor中的符号链接gccg++指向我的新 gcc 和 g++(在 gcc 中)。现在我得到了与sqlcli.h我的 pi 相同的错误。是时候获取 DB2 客户端了。

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

编辑 3

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

4

3 回答 3

2

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

于 2015-06-09T12:46:07.667 回答
1

好的。我最终为 db2.js分叉了 git repo并为该项目贡献了一些工作。现在我可以编译它了。希望一旦有拉动,我也可以在npm不编辑源代码和手动构建的情况下进行安装。

我发现了先决条件:

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

首先感谢 herzi 创建 db2.js!

于 2013-08-20T13:19:20.670 回答
1

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

于 2013-08-15T13:07:11.683 回答