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

NodeJs连接Oracle数据库时遇ORA-01804错误求助

解决Node.js连接Oracle时ORA-01804错误的方案

ORA-01804通常是Oracle客户端无法正确加载时区文件或核心库导致的,针对你已做的操作,补充以下排查和修复步骤:

1. 修正Windows环境变量配置

  • 确认ORACLE_HOME指向Instant Client根目录(即C:\instantclient,不要带子目录),该目录下必须存在oci.dll、oraociei19.dll(对应19版本,18版本为oraociei18.dll)等核心库文件
  • Windows系统无需设置LD_LIBRARY_PATH(这是Linux/Unix环境变量),需将C:\instantclient添加到系统PATH的最前端,确保系统优先加载正确的客户端库
  • 配置完成后重启终端或开发工具,环境变量才会生效

2. 验证Instant Client完整性

  • 确认下载的是18/19版本的完整Instant Client包(建议下载带SDK的基础包)
  • 检查C:\instantclient下是否存在时区数据文件(如timezone_19.dat),若缺失需单独下载对应版本的时区文件包,解压到Instant Client目录下

3. 匹配oracledb包与客户端版本

  • 确保安装的oracledb包版本与Instant Client兼容:18/19版本客户端对应oracledb 4.x及以上版本(可通过npm list oracledb查看当前版本)
  • 版本不匹配时,重新安装包:
    npm uninstall oracledb
    npm install oracledb
    

4. 用最简代码测试连接

排除项目其他配置干扰,使用基础代码验证:

const oracledb = require('oracledb');

async function testConnection() {
  let pool;
  try {
    pool = await oracledb.createPool({
      user: '你的数据库用户名',
      password: '你的数据库密码',
      connectString: '你的连接字符串(如localhost:1521/ORCL)'
    });
    console.log('连接池创建成功');
    const conn = await pool.getConnection();
    const result = await conn.execute('SELECT 1 FROM DUAL');
    console.log('测试查询结果:', result.rows);
    await conn.close();
  } catch (err) {
    console.error('错误详情:', err);
  } finally {
    if (pool) await pool.close();
  }
}

testConnection();

5. 检查系统与权限匹配

  • 确保Node.js和Instant Client同为64位或同为32位,位数必须一致
  • 确认运行Node.js的用户对C:\instantclient目录有读取权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:28:10