如何在 Mac OS X 10.10 上让 Node.js 的 ibm_db 配合 DB2 工作?
目前我正在尝试使用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 "
],
}]