前言
在koa2
项目中使用oracledb
连接Oracle 11G
数据库过程中,出现报错问题:
Failed to fetch data from the database: Error: NJS-138: connections to this database server version are not supported by node-oracledb in Thin mode
oracledb": "^6.4.0"
正文
一、错误原因
这个错误通常表示 node-oracledb
模块正在尝试在Thin
模式下连接到 Oracle 数据库,但是数据库的版本不支持此连接方式。在“Thin”模式下,node-oracledb
使用基于 TCP/IP 的轻量级连接方式,而某些 Oracle 数据库版本可能不支持这种方式。
经过搜索,采取了降级使用node-oracledb
的方法,降级为oracledb": "^5.2.0"
,降级后仍然无法连接。
二、解决方法
在查阅node-oracledb
文档后得知:默认情况下,node-oracledb
驱动程序以精简模式运行,直接连接到 Oracle 数据库 12.1 或更高版本。但是在连接12.1版本之前需要使用Thick
模式。
解决这个问题的方法之一是将 node-oracledb
配置为使用 OCI(Oracle Call Interface)模式进行连接。OCI 模式依赖于 Oracle 客户端库,通常对于连接到各种 Oracle 数据库版本更为通用。
因此解决方法变成了安装Oracle instantclient客户端来支持使用Thick
模式。
Oracle instantclient下载地址
https://www.oracle.com/database/technologies/instant-client/downloads.html
在这里选择对应的系统以及版本
下载后解压放置到某路径下
以下是在Windows系统上配置环境变量的步骤:
设置环境变量 PATH:
- 打开“控制面板” -> “系统与安全” -> “系统” -> “高级系统设置”。
- 在弹出的窗口中,选择“高级”选项卡,然后点击“环境变量”按钮。
- 在“系统变量”部分,找到名为“Path”的变量,并双击打开它。
- 在编辑环境变量窗口中,点击“新建”按钮,然后添加Oracle Instant Client的安装路径,即
E:\OracleInstantClient\instantclient-basic-windows.x64-11.2.0.4.0\instantclient_11_2
。 - 确认添加后,点击“确定”保存更改,关闭所有打开的窗口。
配置完成后在项目中数据库配置启用Thick
模式:
const oracledb = require('oracledb');
// 启用厚模式
oracledb.initOracleClient();
到此,项目可以正常连接远程数据库,问题解决。
参考资料
oracledb文档