Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 连接是封闭节点firebird_Node.js_Firebird_Node Firebird - Fatal编程技术网

Node.js 连接是封闭节点firebird

Node.js 连接是封闭节点firebird,node.js,firebird,node-firebird,Node.js,Firebird,Node Firebird,我正在尝试将我的脚本与Firebird中的数据库连接,但出现此错误 这是我的代码,我正在尝试连接到本地数据库: const Firebird = require('node-firebird'); var options = {}; options.host = '127.0.0.1'; options.port = 3050; options.database = 'C:\\DATABASES\\PRUEBA.FDB'; options.user = 'SYSDBA'; options.pa

我正在尝试将我的脚本与Firebird中的数据库连接,但出现此错误

这是我的代码,我正在尝试连接到本地数据库:

const Firebird = require('node-firebird');

var options = {};
options.host = '127.0.0.1';
options.port = 3050;
options.database = 'C:\\DATABASES\\PRUEBA.FDB';
options.user = 'SYSDBA';
options.password = 'password';
options.lowercase_keys = false; // set to true to lowercase keys
options.role = null;            // default
options.pageSize = 4096;  

Firebird.attach(options, (err, db) => {
  if (err) console.log(err);

  db.query('select * from temp', (err, response) => {
    if (err) console.log(err);

    console.log(response);
  })
})
在my firebird.conf中,具有以下配置:

WireCrypt = Enabled
AuthServer = Spr, Legacy_Auth
UserManager = Legacy_UserManager
错误是这样的,但我不知道会发生什么:

Error: Connection is closed

根据一些实验,当您指定错误的密码或未知用户时,节点firebird基本上只会关闭连接并报告“错误:连接已关闭”(而不是正常的firebird错误“您的用户名和密码未定义。请您的数据库管理员设置firebird登录。”)

而且,尽管GitHub上的代码支持新的Srp身份验证机制,但在发布到NPM(0.9.9)的最新版本中,这实际上并不可用,NPM只支持旧的(
Legacy_Auth
)机制。因此,请确保您的用户存在于
Legacy\u Auth
/
Legacy\u UserManager
插件中(这是SYSDBA的情况),并确保密码与为Legacy\u UserManager创建的SYSDBA用户配置的密码匹配(每个用户管理器都有密码,因此,如果一个用户存在多个用户管理器,那么它可以有不同的密码)

如果不确定,请使用以下命令通过ISQL更新密码:

使用plugin Legacy_UserManager更改用户sysdba密码“”;
简而言之,确保所使用的用户名和密码对于
Legacy\u Auth
/
Legacy\u UserManager
插件有效,那么您的代码就可以工作了


另外,您需要在代码末尾添加一个
db.detach()

您有该错误的完整堆栈跟踪吗?我无法复制它,您的应用程序对我来说运行良好(尽管我必须添加一个
db.detach()
,以便程序结束)。如果您使用ISQL连接,那么从sec$users选择sec$user\U name、sec$plugin的输出是什么??实际上,我可以复制一个“错误:连接已关闭”如果我使用了不正确的密码。使用Firebird 2.5启动时,您可以使用跟踪API从服务器的角度查看与应用程序的交换。有时,它可以让您了解出了什么问题。使用跟踪API有许多商业和免费工具,包括CLI
fbtracemgr
(Firebird服务器的一部分)和GUI—检查所有类别的消息,并查看服务器看到的连接尝试。