Ish*_*han 12 oracle node.js node-oracledb
我的目标是从Ubuntu连接到VMWare客户机(OpenSuse)上的oracle数据库.
现在我只安装了oracledb驱动程序,并尝试运行给定的示例连接程序.
我所遵循的步骤来自github INSTALL页面.到目前为止我所做的是这些:
1)因为我已经安装了node.js,所以我跳过了步骤3.1.
2)我已成功下载并解压缩了步骤3.2中提到的基本和sdk.
3)因为我找不到任何命名的包,libaio
但我确实找到了libaio1
.所以我安装了libaio1
.
4)我LD_LIBRARY_PATH
在我的电脑上创建了环境变量和它的内容/opt/oracle/instantclient
.
5)如步骤3.3中所述 ; 即使在我的情况下它不是强制性的; 我制作了两个环境变量:OCI_LIB_DIR
内容/opt/oracle/instantclient
和OCI_INC_DIR
内容/opt/oracle/instantclient/sdk/include
.
6)已安装node-oracledb
.
我正在尝试运行示例连接程序.我正在使用的代码是https://github.com/ishanatmuz/oracle-test.当我跑步时,node connect.js
我收到此错误.
/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:28
throw err;
^
Error: libclntsh.so.12.1: cannot open shared object file: No such file or directory
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:23:15)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (modullibclntsh.so.12.1e.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
Run Code Online (Sandbox Code Playgroud)
因为我还没有启动VMware客户机; 我希望得到一个错误,没有找到这样的数据库实例.然后只有在运行VMWare机器并连接到其中的数据库之后.而是我得到的错误cannot open shared object file
了libclntsh.so.12.1
.
Chr*_*nes 17
我的第一个怀疑是LD_LIBRARY_PATH实际上没有正确设置或导出.三重检查已设置,目录可由尝试启动节点的实际shell读取.
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2
Run Code Online (Sandbox Code Playgroud)
您需要在任何启动Node.js的shell中执行此操作.
我还要检查机器上安装了哪些其他Oracle库,并确保没有冲突.
使用ldconfig全局设置路径几乎肯定比设置LD_LIBRARY_PATH更容易.你可以这样做:
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Instant Client安装说明.
如果您有可选的Net配置文件,例如sqlnet.ora
或tnsnames.ora
,则可以将它们放在一个目录中/opt/oracle/instantclient_12_2/network/admin
,该目录是配置文件的默认位置.请参见可选的Oracle Net Configuration.
小智 6
导出仅适用于一个进程.看起来,它并没有出现在您的终端窗口(它是单独的过程).因此,您应该在启动之前再次执行以下操作node connect.js
(在您要启动节点的同一终端窗口中):
export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21643 次 |
最近记录: |