如何在 Mac OS X 10.10 上让 Node.js 的 ibm_db 配合 DB2 工作?

0 投票
1 回答
1188 浏览
提问于 2025-04-28 23:44

目前我正在尝试使用ibm_db这个node.js模块,把我的应用程序连接到DB2,就像我在Windows上做的那样(我以前的工作电脑系统)。我还参考了一些关于Mac OS X和ibm_db的Python模块的指南,以防万一,但也没有成功。虽然ibm_db安装上了,但当我第一次尝试与数据库交互时,就出现了一个错误:

dyld: lazy symbol binding failed: Symbol not found: _SQLAllocHandle
Referenced from: /Users/devniel/dev/Pon.de.tu.parte/node_modules/ibm_db/build/Release/odbc_bindings.node
  Expected in: dynamic lookup

dyld: Symbol not found: _SQLAllocHandle
  Referenced from: /Users/devniel/dev/Pon.de.tu.parte/node_modules/ibm_db/build/Release/odbc_bindings.node
  Expected in: dynamic lookup

我在Github上发了一个问题,他们告诉我,原因是Mac OS X缺少一个DS驱动程序。所以,有没有办法让它像Python那样工作,就像那些Python的朋友所做的那样?(我明天会试试)。

暂无标签

1 个回答

0

如果你在Mac上安装了DB2 Express-C(也就是数据库服务器),那么你已经拥有了所需的客户端库。当你准备构建ibm_db时,可以把IBM_DB_HOME这个环境变量指向DB2实例所有者的sqllib目录。例如:

export IBM_DB_HOME=/Users/db2inst1/sqllib

注意:虽然ibm_db可以构建并正常工作,但当前版本在bindings.gyp文件上有个问题,导致它无法在Mac OS X上构建(它只配置为在Linux上构建)。你可以在bindings.gyp中添加以下条件,以便用node-gyp进行构建:

    [ 'OS == "mac" and target_arch =="x64" ', {
      'libraries' : [
        '-L$(IBM_DB_HOME)/lib -L$(IBM_DB_HOME)/lib64 ',
        '-ldb2'
      ],
      'include_dirs': [
        '$(IBM_DB_HOME)/include'
      ],
      'cflags' : [
        "-g "
      ],
    }]

撰写回答