NodeJS 错误:DPI-1047 Oracle数据库连接错误

af7jpaap  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(217)

我试图连接Oracle数据库与node-oracledb,但我有这个错误。

Error: DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 0x0001): tried: 'libclntsh.dylib' (no such file), '/usr/local/lib/libclntsh.dylib' (not a mach-o file), '/usr/lib/libclntsh.dylib' (no such file), '/Users/onuryuksekkaya/Documents/done/getwebee-pms/.webpack/service/libclntsh.dylib' (no such file), '/usr/local/lib/libclntsh.dylib' (not a mach-o file), '/usr/lib/libclntsh.dylib' (no such file)". See https://oracle.github.io/odpi/doc/installation.html#macos for help
Node-oracledb installation instructions: https://oracle.github.io/node-oracledb/INSTALL.html
You must have the arm64 Oracle Instant Client Basic or Basic Light package in ~/lib or /usr/local/lib
They can be downloaded from http://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index.html

有没有快速的解决方案?
我使用的是node 14.18.1和oracle 4.2.0以及m1 macbook pro

czq61nw1

czq61nw11#

我这样修复了这个问题:
首先,您必须从源代码安装node-oracledb。它必须是这样的(这取决于您的OracleDB版本)

"oracledb": "https://github.com/oracle/node-oracledb/releases/download/v5.3.0/oracledb-src-5.3.0.tgz",

然后你必须从这里下载x86 oracle instantclient基本包(ZIP):https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html
然后你必须将你的节点版本从arm更改为x86。你可以在你的zsh终端中用这个命令来改变它

arch -x86_64 zsh

(you必须安装节点x64版本的节点模块)
如果要确保节点版本是x64,可以在终端上执行以下步骤
nodeconsole.log(process.arch)
输出将是您的拱门。必须是x64
使用这些命令时,将安装oracle instant client rm /usr/local/lib/libclntsh.dylibln -s ~/Downloads/instantclient_19_8/libclntsh.dylib /usr/local/lib
当你尝试运行你的项目时,输出将是带有文档名的permisson错误。你必须用文本编辑器一个接一个地打开这些文档。当您打开所有这些文档时,您就可以自由地运行您的项目。

相关问题