从Linux平台上的Node.js连接到DB2

时间:2013-07-31 02:56:53

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

我正在尝试从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)。< / p>

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

祝你好运。

编辑:

我在linux服务器上升级gcc时遇到问题,所以我尝试在我的覆盆子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 Client头文件,所以我可能也需要安装它。

编辑2

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

咩。我有db2客户端9.1.2。根据db2 binding.gyp文件中的一些搜索,我需要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" using an old blog post来帮助我。现在我从未声明strcmp的node-gyp构建中收到错误。我敢打赌,我需要设置一个lib include或node environment var。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

行。我为db2.js结束了forking the git repo并为项目贡献了一些工作。现在我可以编译它。希望一旦有拉动,我也可以安装npm而无需编辑源代码和手动构建。

我找到了先决条件:

  • GCC
  • 克++
  • DB2 Connect或Client V9.7(非运行时客户端,缺少sqlcli.h)
  • 节点-GYP
  • node.js(显然)

首先感谢herzi创建db2.js!