如何使用带有ODBC连接的Node js连接Informix服务器?

时间:2018-06-20 11:11:30

标签: node.js windows odbc informix

  1. 我有Linux Enterprise Server 10 SP2(x86_64)-内核2.6.16.60-0.21-smp。
  2. 我在上述linux服务器中安装了IBM Informix Dynamic Server版本11.10.FC1。
  3. 我安装了带odbc的Windows 2008 Server(DNS名称,例如:eadmin)(IBM INFORMIX 3.80 32位),用于安装notifyix驱动程序和XAMPP v3.2.2。
  4. 我已将Windows PC 7安装为Windows 7,并带有odbc(例如eadmin的dns名称)(IBM INFORMIX 3.80 32位),用于安装notifyix驱动程序,并将wamp 2.4安装为开发服务器。

我的网站在服务器和开发PC(Windows 7)中均运行良好。

现在,我想迁移到Node Js

  1. 在我的开发机中应遵循哪些步骤??

  2. 我尝试过  npm install odbc,  npm install ibm_db,  npm安装win32ole等。

  3. 全部给出错误。 (或者我不知道如何安装,它需要python错误之类的东西)

  4. 我想使用ODBC dns连接Informix服务器,因为我正在PHP中无缝连接。

  5. 简单的mongoDB,mysql等连接正常工作,但notifyix无法正常工作。

1 个答案:

答案 0 :(得分:1)

首先,您应该升级Informix产品。 IDS 11.10太旧了。 ODBC 3.80甚至更老(2002年发布的CSDK 2.70中包含3.80)。

新的Informix服务器(例如12.10.xC11)提供了使用MongoDB驱动程序直接连接的选项。 看:

https://www.ibm.com/developerworks/community/blogs/da95bfce-e0cf-4056-8bc3-2deea450e378/entry/Informix_and_NoSQL_JSON_Wire_Listener_Setup_and_Mongo_Shell?lang=en

使用JSON侦听器,无需通过ODBC驱动程序来连接到IDS服务器。 Uou可以使用连接到MongoDB的同一NodeJS模块。

不过,如果您不能升级引擎,则有几个Informix NodeJS开源驱动程序,但是所有这些驱动程序都需要Informix ODBC驱动程序和ESQL / C库的更新版本。

https://github.com/OpenInformix/IfxNode/blob/master/LocalBuildWindows.md https://www.npmjs.com/package/informix

最新的ODBC驱动程序是4.10.xC11。

Wankdander的“ node-odbc”模块在Windows上可以正常工作:

https://github.com/wankdanker/node-odbc

我使用CSDK 4.10.FC8中的Informix ODBC驱动程序对其进行了测试,并且由于它使用ODBC标准调用,所以它甚至可以与3.80年代的版本一起使用。

--------编辑-------

从头开始进行测试。 您将需要:

  1. NodeJS(我使用的是最新的稳定版8.11.3)
  2. 一个C编译器(我使用了Visual Studio 2015,我想“免费” Express版本就足够了)
  3. Python

步骤是:

在设置了编译器环境的情况下开始会话:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>d:

D:\Infx>cd infx\nodejs811

D:\Infx\nodejs811>dir
 Volume in drive D is Data750
 Volume Serial Number is F0B7-2E44

 Directory of D:\Infx\nodejs811

21/06/2018  12:26    <DIR>          .
21/06/2018  12:26    <DIR>          ..
12/06/2018  22:43        22,778,520 node.exe
11/02/2018  01:08               702 nodevars.bat
11/02/2018  01:08             8,985 node_etw_provider.man
21/06/2018  12:26    <DIR>          node_modules
11/02/2018  00:08             4,974 node_perfctr_provider.man
11/02/2018  01:08               867 npm
11/02/2018  00:08               483 npm.cmd
12/06/2018  01:50               867 npx
12/06/2018  01:50               483 npx.cmd
               8 File(s)     22,795,881 bytes
               3 Dir(s)  201,607,630,848 bytes free
D:\Infx\nodejs811>

设置nodeJS环境:

D:\Infx\nodejs811>nodevars.bat
Your environment has been set up for using Node.js 8.11.3 (x64) and npm.
C:\Users\Administrator> 

安装node-gyp(用于构建odbc模块)

C:\Users\Administrator>npm install node-gyp
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.

+ node-gyp@3.7.0
added 1 package in 1.821s

C:\Users\Administrator>

安装odbc模块:

C:\Users\Administrator>npm install odbc

> odbc@1.4.1 install C:\Users\Administrator\node_modules\odbc
> node-gyp configure build


C:\Users\Administrator\node_modules\odbc>if not defined npm_config_node_gyp (node "D:\Infx\nodejs811\node_modules\npm\no
de_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" configure build )  else (node "D:\In
fx\nodejs811\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" configure build )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  odbc.cpp
  odbc_connection.cpp
  odbc_statement.cpp
  odbc_result.cpp
    ....
    ....
  dynodbc.cpp
  win_delay_load_hook.cc
  strptime.c
     Creating library C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.lib and object C:\Users\Admi
  nistrator\node_modules\odbc\build\Release\odbc_bindings.exp
  Generating code
  Finished generating code
  odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\\odbc_bindings.node
  odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.pdb (Full PDB)
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.

+ odbc@1.4.1
added 3 packages in 31.827s

C:\Users\Administrator> 

检查它是否与连接到Informix ODBC DSN的简单js脚本一起使用:

C:\Users\Administrator>type test.js
var db = require('odbc')()
  , cn = "DSN=ids1210;UID=informix;PWD=dummypwd;";

db.open(cn, function (err) {
  if (err) return console.log(err);

  db.query('select * from systables where tabid = 1', [42], function (err, data) {
    if (err) console.log(err);

    console.log(data);

    db.close(function () {
      console.log('done');
    });
  });
});

C:\Users\Administrator>node test.js
[ { tabname: 'systables',
    owner: 'informix                        ',
    partnum: 1049238,
    tabid: 1,
    rowsize: 500,
    ncols: 26,
    nindexes: 2,
    nrows: 177,
    created: '2017-10-18',
    version: 65831,
    tabtype: 'T',
    locklevel: 'R',
    npused: 7,
    fextsize: 32,
    nextsize: 32,
    flags: 0,
    site: null,
    dbname: null,
    type_xid: 0,
    am_id: 0,
    pagesize: 4096,
    ustlowts: 2018-06-17T00:11:37.000Z,
    secpolicyid: 0,
    protgranularity: ' ',
    statchange: null,
    statlevel: ' ' } ]
done

C:\Users\Administrator>

我没有ODBC 3.80,我用4.10进行了测试,但是从理论上讲,无论驱动程序的版本如何,它都应该可以工作。 没有ODBC 3.8的64位版本,因此您将需要使用32位版本的NodeJS并以32位模式进行编译。