gpt4 book ai didi

javascript - IBM Informix NodeJS 设置问题 - INFORMIXSERVER 值未在 sqlhosts 文件或注册表中列出

转载 作者:搜寻专家 更新时间:2023-10-30 23:26:41 27 4
gpt4 key购买 nike

我正在尝试将 InformixMacOS 上的 NodeJS 连接起来,但遇到了正确配置环境的问题。

在我的 ~/.bash_profile 中我有以下内容:

export INFORMIXDIR=/Applications/IBM/informix
export PATH=$INFORMIXDIR/bin:$PATH
export CSDK_HOME=/Applications/IBM/informix
export INFORMIXSQLHOSTS=/Users/username/Documents/sqlhosts

export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/cli

如您所见,我已将 INFORMIXSQLHOSTS 变量指定给本地文件,而不是默认的 $INFORMIXDIR/etc/sqlhosts,因为我无法理解该目录中的多个示例文件。

我的 sqlhosts 本地文件是这样的:

#INFORMIXSERVER
informix_server onsoctcp localhost my_alias

然后我运行我的 Node 文件index.js:

const opts = {
database: 'db_name@informix_server',
username: 'user',
password: 'password'
};
const informix = require('informix')(opts)

informix.query('select name from table')
.then(cursor => {
return cursor.fetchAll({close: true});
})
.then(results => {
console.log('results:', results);
})
.catch(err => {
console.log(err);
});

当我用 node index.js 运行它时,我得到了错误:

Error: [-25596] The INFORMIXSERVER value is not listed in the sqlhosts file or the Registry.

谁能帮我解决这个问题?

最佳答案

事实证明,您需要在环境配置中为 INFORMIXSERVER 设置一个“默认”值。它可以是你喜欢的任何东西。只有当您在代码中尝试连接时未指定服务器名称时,它才会发挥作用。通常我们会写 db_name@server_name,但是如果我们省略 @server_name 它将连接到环境变量中定义的默认值。

例如:在我定义的环境变量中:

export INFORMIXSERVER=server_name

然后在代码中我将连接到另一个名为 my_server 的服务器:

const opts = {
database: 'my_db@my_server', // I specify the db name and the server name
username: 'user',
password: 'pass'
}

const infx = require('Informix')(opts);

然而,如果我要省略服务器名称:

const opts = {
database: 'my_db',
...
}

代码会将其解释为:

const opts = {
database: 'my_db@server_name', // server name defined in INFORMIXSERVER
...
}

关于javascript - IBM Informix NodeJS 设置问题 - INFORMIXSERVER 值未在 sqlhosts 文件或注册表中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com