在Linux平台上使用Node.js连接到DB2

3
我正在尝试从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

看到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遇到了麻烦,所以我尝试在我的Raspberry Pi上安装作为测试:

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客户端头文件,所以我可能还需要安装它。

编辑2

我在系统中的不同目录下安装了gcc。然后我更改了/usr/bingccg++的符号链接,使它们指向我的新gcc和g++(在gcc内部)。现在我得到了与我的树莓派上相同的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"来帮助我。现在我从 node-gyp 构建中得到一个错误,即未声明 "strcmp"。我想我需要设置一个 lib 包含或节点环境变量。

1
为什么要踩这个问题?这个问题与在Windows平台上从Node.js连接DB2几乎相同,而该问题已经得到了3个赞。 - Jess
1
只需升级您的gcc编译器。不确定为什么会有负面评价。总是有不同的方法来做某事,没有人知道什么是最适合您的“最佳方式”。 - Öö Tiib
FYI,这现在已经正式成为了一个兔子洞。我真的很想做这件事,但我不知道进展会有多快。 - Jess
看起来我的下一步是在Linux服务器上构建gcc。另外,为了好玩,在我的树莓派上安装DB2客户端。 - Jess
哎呀,构建gcc太艰辛了!它已经构建了几个小时。 - Jess
3个回答

2

1
我不确定 API 何时更新,也许是在你查看后不久他们就在开发这个 API。无论如何,我很高兴能够帮助,尽管有点延迟。 - kryczko

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

谢谢Herzi!db2.js非常棒。 - Jess

1

好的。我最终 复制了git repo关于db2.js并为该项目做出了一些贡献,现在我可以进行编译。希望一旦请求被拉取,我也能够使用npm安装而无需编辑源代码和手动构建。

我找到了先决条件:

  • gcc
  • g++
  • DB2 Connect或Client V9.7(不是Runtime Client,它缺少sqlcli.h)
  • node-gyp
  • node.js(显而易见)

感谢herzi首次创建db2.js!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接