nodejs连接达梦DM数据库的问题

软件和网站开发以及相关技术探讨
回复
13028665154
帖子: 10
注册时间: 2022-01-11 8:57
系统: ubuntu20.04.3TLS

nodejs连接达梦DM数据库的问题

#1

帖子 13028665154 » 2022-01-12 9:15

嗯。
在WIN10的本子上,费了好大的劲,又是安装python又是安装c++的编译环境,总算是连上数据库了。
在UBUNTU上,还没成功。
具体问题:
我使用的Ubuntu的版本:20.04.3TLS,已升级到最新了。
安装的node :v16.13.1,自己下载解压安装的,并在/usr/local/bin下建了软链
node中带的npm的版本:8.1.2
用nodejs做的一个web程序,连接的是另一台机器上的达梦数据库。
工程中用npm安装了dmdb模块,
python的版本:Ubuntu自带python3,版本是3.8.10,我又用apt-get命令安装了python2,版本是2.7.18
用apt-get命令安装了gcc,版本:gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
用npm 全局安装node-gyp好象也没报错
npm i -g node-gyp

changed 90 packages, and audited 91 packages in 10s

4 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities
npm中设置python的路径,也正确
npm config set python /usr/bin/python

npm在工程下安装dmdb模块好象也没报错
npm i dmdb

up to date, audited 316 packages in 2s

4 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities

工程也能启动,就是连接达梦数据库时报错
node:events:368
throw er; // Unhandled 'error' event
^

Error: ENOENT: no such file or directory, open ''
Emitted 'error' event on Interface instance at:
at ReadStream.onerror (node:readline:265:10)
at ReadStream.emit (node:events:402:35)
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: ''
}




另外:这台机器用java连达梦数据库很容易,在idea中的数据库工具连也很容易。所以网络没问题。
头像
astolia
论坛版主
帖子: 6453
注册时间: 2008-09-18 13:11

Re: nodejs连接达梦DM数据库的问题

#2

帖子 astolia » 2022-01-12 9:51

连接相关代码呢?报的错是没找到空白文件名的文件,看起来是某个参数没传
13028665154
帖子: 10
注册时间: 2022-01-11 8:57
系统: ubuntu20.04.3TLS

Re: nodejs连接达梦DM数据库的问题

#3

帖子 13028665154 » 2022-01-12 14:14

一样的代码在WIN10系统下是能正常工作的,所以感觉不是代码的是。
不过我还是贴上代码吧
const dmdb = require('dmdb');
dmdb.fetchAsString = [dmdb.CLOB];
let pool;
if (pool == null) {
pool = await dmdb.createPool(dbsSetting);
}
头像
astolia
论坛版主
帖子: 6453
注册时间: 2008-09-18 13:11

Re: nodejs连接达梦DM数据库的问题

#4

帖子 astolia » 2022-01-12 17:39

最关键的连接配置都不贴出来,你在搞笑吗?
你是用什么方案连接到其他机器上的?odbc吗?那你unixodbc相关的配置做好没有?
13028665154
帖子: 10
注册时间: 2022-01-11 8:57
系统: ubuntu20.04.3TLS

Re: nodejs连接达梦DM数据库的问题

#5

帖子 13028665154 » 2022-01-12 19:46

楼上的大神不要生气,我也不清楚要贴些什么,因为配置是存在NACO中的,只有运行时才能看到,所以你让贴代码就没贴。
dbsSetting: {
connectString: 'dm://UID:PWD@10.128.5.19:25239?autoCommit=false',
poolMax: 3,
poolMin: 1
}
我把用户名密码IP端口号都改过了,这样应该就不是什么秘密了吧。
头像
astolia
论坛版主
帖子: 6453
注册时间: 2008-09-18 13:11

Re: nodejs连接达梦DM数据库的问题

#6

帖子 astolia » 2022-01-13 13:42

我在我机器上试了一下,大概是它的模块兼容性问题。nodejs 16版本太高了,用12或14版的都不会报这个错。
你去 https://nodejs.org/en/download/releases/ 下载低版本的,重新建立软链接或者设置PATH环境变量,重走一遍npm install dmdb这套流程再试试?
13028665154
帖子: 10
注册时间: 2022-01-11 8:57
系统: ubuntu20.04.3TLS

Re: nodejs连接达梦DM数据库的问题

#7

帖子 13028665154 » 2022-01-13 17:31

谢谢楼上大神,果然是这个原因,已经能正常连接了。。。
撒花!!!
每一个细心帮助别人的人,都是好人
mobox
帖子: 22
注册时间: 2010-09-30 16:39

Re: nodejs连接达梦DM数据库的问题

#8

帖子 mobox » 2022-02-10 10:03

谢谢 各位大神我也有类似问题,可以参考,谢谢 :Adore
回复