You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js连接Oracle OCI钱包遇NJS-511/ORA-12506错误求助

解决Node.js oracledb连接Oracle OCI钱包出现NJS-511/ORA-12506错误的方案

可能的原因及解决方案

1. 明确配置钱包路径

oracledb不会自动识别钱包位置,即使tnsnames.ora读取正确,也需要显式指定钱包目录:

  • 在代码的config对象中添加walletLocation参数,指向钱包所在目录:
    const path = require('path');
    const config = {
      user: 'xxxx',
      password: 'xxxx',
      connectString: 'xxxx',
      walletLocation: path.join(__dirname, './your-wallet-directory')
    };
    
  • 或者设置环境变量TNS_ADMIN指向钱包目录:
    • Linux/macOS:终端执行export TNS_ADMIN=/full/path/to/wallet后启动Node.js应用
    • Windows:在系统环境变量中添加TNS_ADMIN,值为钱包的完整路径

2. 验证TNS配置的一致性

确认Node.js进程读取的tnsnames.ora和SQL Developer使用的是同一个文件:

  • 在代码中打印process.env.TNS_ADMIN,检查路径是否指向钱包目录
  • 对比tnsnames.ora中的服务名,确保connectString的值和SQL Developer连接时使用的服务名完全一致(注意区分_high/_medium/_low后缀)

3. 检查文件权限

确保Node.js进程拥有钱包目录下所有文件的读取权限:

  • Linux/macOS执行:chmod -R 755 /path/to/wallet
  • Windows右键钱包目录,在「属性-安全」中添加当前用户的读取权限

4. 确认版本兼容性

确保oracledb版本与Oracle Instant Client版本匹配,参考官方兼容矩阵升级或降级对应组件到兼容版本。

5. 修正SQL语句(附加提醒)

原代码中的SQL语句存在语法错误,hello world需要用单引号包裹,修正后:

let result = await conn.execute("select 'hello world' from dual");

内容的提问来源于stack exchange,提问作者PretoriaCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:22:27