IBM Informix Nodejs设置问题 - InformixServer值未在SQLHOSTS文件或注册表中列



我正在尝试将 Informix nodejs on MacOS 连接起来正确。

在我的〜/.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

我然后运行我的节点文件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运行此问题时,我会收到错误:

错误:[-25596] InformixServer值未在SQLHOSTS文件或注册表中列出。

任何人都可以帮助我解决这个问题吗?

事实证明,您必须在环境配置中为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
  ...
}

最新更新