Loading... # 前言 在`koa2`项目中使用`oracledb`连接`Oracle 11G`数据库过程中,出现报错问题: ![](https://blog.leesong.top/usr/uploads/2024/03/1775433721.png) **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 在这里选择对应的系统以及版本 ![](https://blog.leesong.top/usr/uploads/2024/03/3079803689.png) ![](https://blog.leesong.top/usr/uploads/2024/03/635717088.png) 下载后解压放置到某路径下 以下是在Windows系统上配置环境变量的步骤: **设置环境变量 PATH**: * 打开“控制面板” -> “系统与安全” -> “系统” -> “高级系统设置”。 * 在弹出的窗口中,选择“高级”选项卡,然后点击“环境变量”按钮。 * 在“系统变量”部分,找到名为“Path”的变量,并双击打开它。 * 在编辑环境变量窗口中,点击“新建”按钮,然后添加Oracle Instant Client的安装路径,即`E:\OracleInstantClient\instantclient-basic-windows.x64-11.2.0.4.0\instantclient_11_2`。 * 确认添加后,点击“确定”保存更改,关闭所有打开的窗口。 配置完成后在项目中数据库配置启用`Thick`模式: ```javascript const oracledb = require('oracledb'); // 启用厚模式 oracledb.initOracleClient(); ``` 到此,项目可以正常连接远程数据库,问题解决。 # 参考资料 > **oracledb文档** > > https://node-oracledb.readthedocs.io/en/latest/user_guide/initialization.html#oracleclientloadingwindows 最后修改:2024 年 03 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏