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

标签 javascript node.js database macos informix

我正在尝试将 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/

相关文章:

javascript - javascript new Date(timestamp) 是否根据客户端时区返回日期?

node.js - react + 下一步 : Not sending cookies from server-side to backend

javascript - 将函数应用于对象树中属性的所有实例

javascript - Mongoose 增量值不起作用

python - 将聊天记录存储在关系数据库中

javascript - 如何解决文本字符串必须在嵌套 map 中的 <Text> 内呈现?

javascript - 使用 Vanilla JS 在外部单击时删除元素的属性

javascript - 提交前检查电子邮件无效

数据库插入脚本准备测试(记录数据状态?)

ruby - 如何在 Sequel Postgresql 迁移中定义 ARRAY 列?